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

如何在Blazor WinForms的Syncfusion DataGrid中为按钮添加onClick事件?

在Blazor WinForms的SfGrid Id列添加带点击事件的编辑按钮

你可以通过GridColumn的Template属性实现这个需求,Syncfusion SfGrid支持自定义列模板,完全能嵌入带点击事件的按钮,具体实现如下:

1. 修改SfGrid的Id列代码

把原Id列替换为带模板的列,在模板中添加按钮并绑定点击事件,同时传递当前行的Customer对象:

<SfGrid DataSource="@Customers" RowHeight="20" AllowPaging="true" AllowSorting="true" AllowFiltering="true">
    <GridPageSettings PageSize="50"></GridPageSettings>
    <GridColumns>
        <!-- 带编辑按钮的Id列 -->
        <GridColumn HeaderText="Id" Width="120">
            <Template>
                @{
                    var customer = context as Customer;
                    <button class="btn btn-sm btn-primary" @onclick="() => OpenEditForm(customer)">
                        @customer.Id
                    </button>
                }
            </Template>
        </GridColumn>
        <GridColumn Field=@nameof(Customer.Name) HeaderText="Name" Width="120"></GridColumn>
        <GridColumn Field=@nameof(Customer.Email) HeaderText="Email" Width="120"></GridColumn>
        <GridColumn Field=@nameof(Customer.Password) HeaderText="Password" Width="120"></GridColumn>
    </GridColumns>
</SfGrid>

2. 编写点击事件与新窗体逻辑

在代码块中实现OpenEditForm方法,利用WinForms窗体实例打开编辑窗口,比如自定义一个CustomerEditForm用于编辑客户数据:

@code {
    private List<Customer> Customers { get; set; } = new List<Customer>();

    // 初始化示例数据(替换为你的实际数据逻辑)
    protected override void OnInitialized()
    {
        Customers = new List<Customer>
        {
            new Customer { Id = 1, Name = "张三", Email = "zhangsan@example.com", Password = "123456" },
            new Customer { Id = 2, Name = "李四", Email = "lisi@example.com", Password = "654321" }
        };
    }

    private void OpenEditForm(Customer customer)
    {
        // 创建编辑窗体实例,传入要编辑的客户数据
        var editForm = new CustomerEditForm(customer);
        // 显示模态窗体(非模态可用Show())
        editForm.ShowDialog();
        
        // 编辑完成后如需刷新Grid,可在此重新加载数据
        // Customers = await GetUpdatedCustomersAsync();
    }
}

3. 自定义WinForms编辑窗体说明

你需要创建一个WinForms窗体CustomerEditForm:

  • 在构造函数中接收Customer参数,将数据填充到输入控件
  • 保存按钮点击时,把输入值更新回传入的Customer对象(或通过事件传递更新后的数据)

注意事项

  • 确保项目已正确引用Syncfusion Blazor Grid相关NuGet包
  • 按钮样式可根据需求调整,比如用自定义CSS或Blazor Bootstrap类
  • 若需异步加载数据,可将OpenEditForm改为异步方法并使用await

内容的提问来源于stack exchange,提问作者Swicksy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 03:40:20