如何在Kendo Grid for ASP.NET Core中使用服务器端模板

时间:2018-02-08 23:12:42

标签: kendo-ui kendo-grid kendo-asp.net-mvc

我正在使用Telerik的ASP.NET Core用户界面,我正在尝试使用Grid列的用户服务器端模板,如下所示

 @(Html.Kendo().Grid<GridModel>()
    .Name("Grid")                    
    .Columns(col =>
    {
        col.Template(@<text>
                        <input type="checkbox" value="@item.ID"/>
                     </text>);
        col.Bound(p => p.Amount).Title("Amount").Format("{0:C}");
        col.Bound(p => p.DueDate).Title("Due Date").Format("{0:MM/dd/yyyy}");                        
    })
    .AutoBind(false)
    .Pageable()
    .Sortable()
    .Resizable(resize => resize.Columns(true))
    .Scrollable()
    .Sortable(sortable => sortable
    .AllowUnsort(true)
    .SortMode(GridSortMode.MultipleColumn))
    .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(50)
        .ServerOperation(true)
        .Model(model =>
        {
            model.Id(p => p.ID);
        })
        .Read(read =>
        {
            read.Action("GetData", "MyController");
        })
    ).Deferred())

然而,在这一行value="@item.ID" VS 2017抛出错误

  

无法将lambda表达式转换为'string'类型,因为它不是a   委托类型

2 个答案:

答案 0 :(得分:0)

由于您的网格绑定了 Ajax 而未绑定服务器,因此您应该使用ClientTemplate。根据{{​​3}}: -

  

如果Grid是Ajax绑定的,请使用ClientTemplate方法。价值   应该是一个字符串,代表一个有效的Kendo UI模板。

您需要使用以下客户端模板: -

col.Template(@<text></text>)
   .ClientTemplate("<input type='checkbox' value='#= data.ID #"/>");

请注意:仅当您没有Template列(如API中所示)时,我们才需要Bound,否则您可以直接使用Bound + ClientTemplate

答案 1 :(得分:0)

col.Template("<input type='checkbox' value='#= data.ID #"/>");

这是解决方案