我正在使用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 委托类型
答案 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 #"/>");
这是解决方案