Blazor WebAssembly中如何基于DxGrid行属性控制删除按钮可见性?
实现DxGrid行级控制删除按钮显示
方法一:使用CustomizeCommandButtons事件
- 在DxGrid组件上绑定事件,同时开启删除按钮的全局可见性:
<DxGrid @ref="Grid" Data="@YourDataSource" CustomizeCommandButtons="OnCustomizeCommandButtons"> <Columns> <DxGridDataColumn FieldName="column1" /> <DxGridDataColumn FieldName="column2" /> <DxGridDataColumn FieldName="column3" /> <DxGridCommandColumn Width="160px" DeleteButtonVisible="true" /> </Columns> </DxGrid>
- 在代码段中实现事件逻辑,根据行数据属性动态控制按钮可见性:
private DxGrid Grid { get; set; } private void OnCustomizeCommandButtons(GridCustomizeCommandButtonsEventArgs e) { // 替换为你的数据模型类型 var dataItem = (YourDataModel)e.DataItem; // 替换为实际判断条件,比如 dataItem.IsAllowDelete、dataItem.Status != "Locked" 等 e.Buttons[GridCommandButtonKind.Delete].Visible = dataItem.CanDelete; }
方法二:使用DeleteButtonTemplate自定义模板
如果需要更灵活的按钮样式或逻辑,可采用模板方式:
<DxGrid @ref="Grid" Data="@YourDataSource"> <Columns> <DxGridDataColumn FieldName="column1" /> <DxGridDataColumn FieldName="column2" /> <DxGridDataColumn FieldName="column3" /> <DxGridCommandColumn Width="160px" EditButtonVisible="true"> <DeleteButtonTemplate> @{ var dataItem = (YourDataModel)context.DataItem; if (dataItem.CanDelete) // 你的判断条件 { <DxButton CssClass="dxbl-grid-command-button" Icon="delete" Click="@(() => Grid.DeleteRow(dataItem))" /> } } </DeleteButtonTemplate> </DxGridCommandColumn> </Columns> </DxGrid>
注意事项
- 替换
YourDataModel为你实际绑定到Grid的实体类类型 - 将
CanDelete替换为控制按钮显示的具体属性或业务逻辑 - 确保
Grid的@ref引用已正确声明,用于调用DeleteRow方法 - 如需保留添加按钮,默认工具栏模式下会自动显示,无需额外配置
内容的提问来源于stack exchange,提问作者andreasperelli
相关产品推荐
相关产品推荐

