绑定客户端模板中的两个字段以获取kendo网格列

时间:2014-01-17 09:51:19

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

我收到一条InvalidOperationException并显示一条消息:

  

绑定列需要字段或属性访问表达式

我的剃刀标记是这样的:

(@Html.Kendo().Grid<StackInfo>()
            .Columns(col =>
            {
                col.Bound(e => e.FileID).Title("ID");
                col.Bound(e => e.Name).Title("Filename");
                col.Bound(e => e.Status);

                col.Bound(e => new { Status = e.Status, FileID = e.FileID }).ClientTemplate("#if(Status == 'new') {#"
                    + "<a href=\"View?TaskID=#FileID#\">View</a>"
                    + "#} else {#"
                    + "<a href=\"Open?TaskID=#FileID#\">Open</a>"
                    + "#} #").Title(string.Empty);
            })
            .AutoBind(false)
            .DataSource(ds => ds
                .Ajax()
                .Read(r => r.Action("Tasks_Read", "Task"))
                .PageSize(10)
                )
            .Pageable()
            .Name("tasksGrid")
            .Scrollable(k => k.Height(205)))

我想要完成的是网格将显示一个额外的列;它提供了一个链接,其动作实际上基于“状态”字段中的值。因此我写了这样的ClientTemplate。

但是我在那条线上得到了一个例外。这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:6)

我认为问题出在第四栏的.Bound(e => new { Status = e.Status, FileID = e.FileID })。试试这段代码:

columns.Template(@<text></text>)
    .ClientTemplate("#if(Status == 'new') {#"
                + "<a href=\"View?TaskID=#FileID#\">View</a>"
                + "#} else {#"
                + "<a href=\"Open?TaskID=#FileID#\">Open</a>"
                + "#} #").Title(string.Empty);