You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MudBlazor的MudDataGrid中实现特定记录删除功能?

在MudBlazor MudDataGrid中实现删除记录功能

步骤1:修改删除按钮,传递当前行数据

在你的CellTemplate里,把删除按钮的OnClick事件改成传入当前行的上下文对象(即当前要删除的Menuitemlist记录):

<Column T="Menuitemlist" StickyLeft="true">
    <CellTemplate>
        <!-- 通过context获取当前行的Menuitemlist对象,传递给删除方法 -->
        <MudIconButton OnClick="@(() => PrcdBtnClick(context))" Color="@Color.Default" Icon="@Icons.Material.Filled.Delete" />
    </CellTemplate>
</Column>

步骤2:实现删除方法,处理记录移除

在代码逻辑部分(比如.razor.cs文件或razor页面的@code块),定义PrcdBtnClick方法,接收当前行的Menuitemlist对象,从中获取ID并移除记录:

// 假设你的Elements是List<Menuitemlist>类型
private List<Menuitemlist> Elements = new List<Menuitemlist>();

private void PrcdBtnClick(Menuitemlist itemToDelete)
{
    // 获取要删除记录的ID(根据你的Menuitemlist类实际字段调整,比如itemToDelete.Id)
    var deletedItemId = itemToDelete.Id;
    
    // 从集合中移除该记录
    Elements.Remove(itemToDelete);
    
    // 如果使用的是List,需要手动通知UI更新
    StateHasChanged();
    
    // 这里还可以添加后端API调用,比如删除数据库中的记录
    // await DeleteItemFromDatabase(deletedItemId);
}

优化建议:使用ObservableCollection自动刷新UI

如果你不想每次删除后手动调用StateHasChanged(),可以把Elements的类型改成ObservableCollection<Menuitemlist>,它会自动监听集合变化并更新UI:

private ObservableCollection<Menuitemlist> Elements = new ObservableCollection<Menuitemlist>();

private void PrcdBtnClick(Menuitemlist itemToDelete)
{
    var deletedItemId = itemToDelete.Id;
    Elements.Remove(itemToDelete);
    // 无需调用StateHasChanged(),ObservableCollection会自动触发UI更新
    // await DeleteItemFromDatabase(deletedItemId);
}

完整修改后的MudDataGrid代码示例

<MudItem xs="12" Class="pt-0">
   <div id="unique_id_scroll_section" class="ma-0" style="height:200px;overflow: auto">
   <MudDataGrid Items="@Elements" Hover="true" Striped="true" Dense="true">
          <Columns>
                <Column T="Menuitemlist" StickyLeft="true">
                     <CellTemplate>
                          <MudIconButton OnClick="@(() => PrcdBtnClick(context))" Color="@Color.Default" Icon="@Icons.Material.Filled.Delete" />
                     </CellTemplate>
                </Column>
                <Column T="Menuitemlist" Field="ItemName" Title="Name" />
                <Column T="Menuitemlist" Title="Qty" Style="width:10px" />
                <Column T="Menuitemlist" Field="OptionalSalesPrice" Title="Price" Style="width:10px" />
                <Column T="Menuitemlist" Title="Total" Style="width:10px" />
          </Columns>
   </MudDataGrid>
   </div> 
</MudItem>

@code {
    // 替换成你的实际数据集合类型
    private ObservableCollection<Menuitemlist> Elements = new ObservableCollection<Menuitemlist>();

    private void PrcdBtnClick(Menuitemlist itemToDelete)
    {
        // 获取记录ID
        var itemId = itemToDelete.Id;
        // 移除记录
        Elements.Remove(itemToDelete);
        // 可选:调用后端接口删除数据库中的对应记录
        // _ = DeleteItemAsync(itemId);
    }

    // 假设的Menuitemlist类,根据你的实际结构调整
    public class Menuitemlist
    {
        public int Id { get; set; }
        public string ItemName { get; set; }
        public decimal OptionalSalesPrice { get; set; }
        // 其他字段...
    }
}

内容的提问来源于stack exchange,提问作者Danul Hivi Vihan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 12:15:42