【问题标题】:Adding custom buttons to Kendo grid toolbar in ASP.NET Core在 ASP.NET Core 中向 Kendo 网格工具栏添加自定义按钮
【发布时间】:2018-02-21 16:53:28
【问题描述】:

我正在为我的 ASP.NET Core 应用程序使用 Kendo 工具。我有一个网格,我想将自定义按钮添加到网格工具栏。我可以轻松地添加导出到 excel 按钮,但我很难添加我的自定义按钮。

目前我的按钮只显示在网格上方,这些按钮如下:

<a href='#' class='k-button' id='saveState'>Save Grid Settings</a>
<a href='#' class='k-button' id='clearState'>Clear Grid Settings</a>

这是我的网格:

@(Html.Kendo().Grid<SylectusTL.ViewModels.Account.UserList>()
.Name("UserList")
.Columns(columns =>
{
    columns.Bound(c => c.user_name).ClientTemplate(@"<a href=" + @Url.Content("/Account/UserProfile?caller='UserList'&user_id=#:data.user_id#") + ">#: user_name #</a>").Title("User Name");
    columns.Bound(c => c.full_name).Title("Name");
    columns.Bound(c => c.main_phone).Title("Phone").Width(150);
    columns.Bound(c => c.main_phone_ext).Title("Ext").Width(100);
    columns.Bound(c => c.email).Title("E-Mail");
    columns.Bound(c => c.admin).ClientTemplate("#= admin ? 'Y' : 'N' #").Title("Admin").Width(100).HeaderHtmlAttributes(new { style = "text-align: center;" }).HtmlAttributes(new { style = "text-align: center;" });
    columns.Bound(c => c.active).ClientTemplate("#= active ? 'Y' : 'N' #").Title("Active").Width(100).HeaderHtmlAttributes(new { style = "text-align: center;" }).HtmlAttributes(new { style = "text-align: center;" });
    columns.Bound(c => c.last_login).Title("Last Login").Format("{0:MM/dd/yyyy}");
})
.ToolBar(tools =>
{
    tools.Excel();
})
.Pageable(pageable => pageable
    .Refresh(true)
    .PageSizes(new int[] { 10, 20, 50 })
    .ButtonCount(5))
.Sortable(sortable => sortable
.AllowUnsort(true)
.SortMode(GridSortMode.MultipleColumn)
.ShowIndexes(true))
.Scrollable()
.Reorderable(reorder => reorder.Columns(true))
.Filterable()
.ColumnMenu()
.Excel(excel => excel
    .FileName("User List.xlsx")
    .Filterable(true)
    .ProxyURL(Url.Action("Excel_Export_Save", "Account"))
)
.DataSource(dataSource => dataSource
    .Ajax()
    .PageSize(20)
    .Read(read => read.Action("Users_Read", "Account").Data("additionalData"))
)
)

有没有办法向工具栏属性添加一些模板,我希望按钮显示在导出到 excel 按钮旁边。我查看了一些教程,并且在我的工具栏属性中使用 tools.template 显示了所有内容,但是当我尝试显示模板不存在时。

【问题讨论】:

    标签: asp.net-core kendo-ui telerik kendo-grid telerik-grid


    【解决方案1】:

    tools.Excel() 之后添加tools.Custom() 语句。此示例使用标准创建按钮和用于复制行的自定义按钮创建一个工具栏。

    ...
    .ToolBar(toolbar =>
    {
        toolbar.Create();
        toolbar.Custom()
            .HtmlAttributes ( new { onclick="master_duplicate(); return false;" } )
            .Name("duplicate")@* creates a button with class k-grid-duplicate *@
            .Text("Duplicate")
            .IconClass("k-icon k-i-copy")
            .Url("#")
            ;
    })
    ...
    

    和javascript

    var dup_select_id; * used later in databound handler to automatically select the new duplicate;
    function master_duplicate() {
        var grid = $('#master').data('kendoGrid');
        var data = grid.dataItem(grid.select());
        $.ajax({
            url: "@Url.Action("Duplicate")",
            type: "POST",
            data: { masterID: data.id }
            })
            .done(function (data, status, jqXHR) {
                if (data.Data && data.Data.id) {
                    dup_select_id = data.Data.id;
                    grid.dataSource.read();
                }
            })
        ;
    }
    

    当没有选中的行时,还有其他逻辑可以隐藏按钮。

    【讨论】:

    • 对我不起作用。只获取一个按钮,不获取excel按钮。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多