剑道模板和保留字

时间:2014-04-02 19:30:35

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

GridInForm C# project available from Telerik文件中,Index.cshtml包含此网格(以及其他内容):

@(Html.Kendo().Grid(Model.Products)
    .Name("Products")
    .ToolBar(tools => tools.Create().Text("Add new product"))
    .Editable(editable => editable.Mode(GridEditMode.InCell).CreateAt(GridInsertRowPosition.Bottom))
    .Columns(columns =>
    {
        columns.Bound(p => p.Name).ClientTemplate("#= Name #" + 
            "<input type='hidden' name='Products[#= index(data)#].Name' value='#= Name #' />");

        columns.Bound(p => p.ProductID).Hidden().ClientTemplate("#= ProductID #" +
            "<input type='hidden' name='Products[#= index(data)#].ProductID' value='#= ProductID #' />");

        columns.Command(command => command.Destroy()).Width(100);
    })
    .DataSource(dataSource => dataSource
        .Ajax()
        .Model(model => 
        {
            model.Id(p => p.ProductID);
            model.Field(p => p.ProductID).Editable(false);
        })
        .ServerOperation(false)
    )
)

这个javascript函数:

function index(dataItem) {
    var data = $("#Products").data("kendoGrid").dataSource.data();
    return data.indexOf(dataItem);
}

我的问题是如何找到有关模板中传递给data函数的index参数的更多信息(在ClientTemplate调用中)。它是什么,它来自哪里?

1 个答案:

答案 0 :(得分:0)

此行显示index()功能的使用:

"<input type='hidden' name='Products[#= index(data)#].ProductID' value='#= ProductID #' />"
此行中的

data是Kendo框架在解析客户端模板时创建的内置对象。它表示该特定行的数据对象。

您可以在此处阅读data对象:http://docs.telerik.com/kendo-ui/getting-started/using-kendo-with/aspnet-mvc/helpers/grid/faq#how-do-i-use-a-javascript-function-in-a-column-client-template?在标题为“如何在列客户端模板中使用JavaScript函数?”的问题下进行。

如果您想具体了解它的外观,可以在console.wirte(JSON.stringify(dataItem))函数中添加index()以查看其确切结构。

修改

此外,客户端模板只是Kendo Javascript在创建每行中的每列时解析的文本字符串。那时,它具有该行的数据对象,用于将值插入到网格中。 MVC只是实际在文档中生成HTML的Javascript库的包装器。