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

如何替换Syncfusion Grid默认工具栏,自定义增删改按钮跳转至Razor页面?

实现Syncfusion Grid工具栏按钮跳转至Razor页面(替代内置编辑)

修改步骤

1. 禁用Grid内置编辑功能

调整e-grid-editSettings,关闭内置的添加/编辑/删除行为,避免触发表格内操作:

<e-grid-editSettings allowAdding="false" allowDeleting="false" allowEditing="false" mode="None"></e-grid-editSettings>

2. 预生成Razor页面URL

在页面代码块中用ASP.NET的Url.Page方法生成目标页面的正确链接,避免硬编码路径:

@{
    ViewData["Title"] = "Index";
    Layout = "~/Pages/Shared/_Layout.cshtml";
    // 生成各操作页面的URL
    var createUrl = Url.Page("Create");
    var editUrl = Url.Page("Edit");
    var deleteUrl = Url.Page("Delete");
}

3. 扩展工具栏点击事件逻辑

修改toolbarClick函数,添加对Add/Edit/Delete按钮的处理,实现页面跳转并增加必要校验:

function toolbarClick(args) {
    var gridObj = document.getElementById("Grid").ej2_instances[0];
    if (args.item.id === 'Grid_pdfexport') {
        gridObj.showSpinner();
        gridObj.pdfExport();
    } else if (args.item.id === 'Grid_excelexport') {
        gridObj.showSpinner();
        gridObj.excelExport();
    } else if (args.item.id === 'Grid_add') {
        // 跳转至新增页面
        window.location.href = '@createUrl';
    } else if (args.item.id === 'Grid_edit') {
        // 获取选中行数据
        var selectedRows = gridObj.getSelectedRecords();
        if (selectedRows.length > 0) {
            var userId = selectedRows[0].Id;
            // 跳转至编辑页面并携带ID参数
            window.location.href = '@editUrl' + '?id=' + userId;
        } else {
            alert('请先选择一行进行编辑');
        }
    } else if (args.item.id === 'Grid_delete') {
        var selectedRows = gridObj.getSelectedRecords();
        if (selectedRows.length > 0) {
            if (confirm('确定要删除选中的用户吗?')) {
                var userId = selectedRows[0].Id;
                // 跳转至删除页面并携带ID参数
                window.location.href = '@deleteUrl' + '?id=' + userId;
            }
        } else {
            alert('请先选择一行进行删除');
        }
    }
}

完整修改后的页面代码

@page
@model developmentWeb.Pages.Users.IndexModel

@{
    ViewData["Title"] = "Index";
    Layout = "~/Pages/Shared/_Layout.cshtml";
    // 生成各操作页面的URL
    var createUrl = Url.Page("Create");
    var editUrl = Url.Page("Edit");
    var deleteUrl = Url.Page("Delete");
}

<h1>Index</h1>
<p>
    <a asp-page="Create">Create New</a>
</p>

<ejs-grid id="Grid" dataSource=((System.Data.DataTable)Model.Dt)
          toolbarClick="toolbarClick" toolbar="@( new List<string>(){"Add","Edit","Delete","Print","ExcelExport","PdfExport"})" height="270"
          enablePersistence="true"
          allowPdfExport="true"
          allowExcelExport="true"
          allowSelection="true"
          allowTextWrap="true"
          allowReordering="true"
          allowSorting="true"
          allowResizing="true"
          allowFiltering="true"
          allowGrouping="true"
          allowPaging="true">
          <!-- 禁用内置编辑功能 -->
          <e-grid-editSettings allowAdding="false" allowDeleting="false" allowEditing="false" mode="None"></e-grid-editSettings>
    <e-grid-pagesettings pageCount="10"></e-grid-pagesettings>
    <e-grid-filterSettings type="Menu"></e-grid-filterSettings>
    <e-grid-columns>
        <e-grid-column field="UserName" headerText="User Name" width="120"></e-grid-column>
        <e-grid-column field="FirstName" headerText="First Name" width="120"></e-grid-column>
        <e-grid-column field="LastName" headerText="Last Name" width="120"></e-grid-column>
        <e-grid-column field="DateCreated" headerText="Created" format="yMd" width="130"></e-grid-column>
        <e-grid-column field="EmailConfirmed" headerText="Activated" DisplayAsCheckBox="true" AllowEditing="false" width="60"></e-grid-column>
        <e-grid-column field="TenantName" headerText="Tenant" width="150"></e-grid-column>
        <e-grid-column field="Id" headerText="Id" Visible="false" width="10"></e-grid-column>
    </e-grid-columns>
</ejs-grid>

<script>
  function toolbarClick(args) {
        var gridObj = document.getElementById("Grid").ej2_instances[0];
        if (args.item.id === 'Grid_pdfexport') {
            gridObj.showSpinner();
            gridObj.pdfExport();
        } else if (args.item.id === 'Grid_excelexport') {
            gridObj.showSpinner();
            gridObj.excelExport();
        } else if (args.item.id === 'Grid_add') {
            // 跳转至新增页面
            window.location.href = '@createUrl';
        } else if (args.item.id === 'Grid_edit') {
            // 获取选中行数据
            var selectedRows = gridObj.getSelectedRecords();
            if (selectedRows.length > 0) {
                var userId = selectedRows[0].Id;
                // 跳转至编辑页面并携带ID参数
                window.location.href = '@editUrl' + '?id=' + userId;
            } else {
                alert('请先选择一行进行编辑');
            }
        } else if (args.item.id === 'Grid_delete') {
            var selectedRows = gridObj.getSelectedRecords();
            if (selectedRows.length > 0) {
                if (confirm('确定要删除选中的用户吗?')) {
                    var userId = selectedRows[0].Id;
                    // 跳转至删除页面并携带ID参数
                    window.location.href = '@deleteUrl' + '?id=' + userId;
                }
            } else {
                alert('请先选择一行进行删除');
            }
        }
    }

    function pdfExportComplete(args) {
        this.hideSpinner();
    }

    function excelExportComplete(args) {
        this.hideSpinner();
    }
</script>

关键说明

  • 禁用内置编辑:通过mode="None"和关闭allowAdding/allowEditing/allowDeleting,确保Grid不会触发默认的表格内操作。
  • 选中行校验:点击Edit/Delete时先检查是否有选中行,避免无意义跳转。
  • 动态URL生成:使用Url.Page生成符合ASP.NET路由规则的链接,适配不同部署环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:01:20