是否可以在Kendo Web UI中为模型指定多个ID?

时间:2012-10-28 14:30:32

标签: model kendo-ui identifier

我对Kendo UI完全不熟悉,所以也许我错过了一些东西,但在阅读了文档API:http://docs.kendoui.com/api/framework/model之后,似乎Kendo仅限于使用单个ID。

例如,假设我有一个网格,其中每一行都由一对值标识(因为基础数据具有这样的约束)。那么,如果我读得正确,在剑道中没有直接表达方式吗?

我能想到的一个解决方法是创建一些ad-hoc值,它是编码的id,如“value1 | value2”(字符串),当从UI获取数据时,将它们解码回来。

还有更明确​​的方法吗?

具体示例

专注于实质性的事情:

http://demos.kendoui.com/web/grid/editing-inline.html

并且相关代码是(来自.cshtml文件):

.Model(model => model.Id(p => p.ProductID))

在我的情况下,它将是(我能想到的最简单的方式):

.Model(model => model.Id(p => p.ProductComboId1Id2))

其中ProductComboId1Id2是按上述方式编码的字符串。

解决方案(有点)

请参阅页面底部,这是Kendo安装的问题。安装程序脚本没有安装一个关键的.js文件,整个框架变得奇怪。我的问题是其中一个不当行为。

2 个答案:

答案 0 :(得分:11)

您可以在单个网格上使用多个ID。下面我已经包含了声明它们的语法以及如何通过javascript访问它们。

<强>声明

        .Model(model =>
        {
            model.Id(i => i.ProductID);
            model.Id(i => i.ProductID2);
        })

<强>访问

function GetIDs() {
var itemGrid = $("#GRIDNAME").data("kendoGrid");
var dataItem = itemGrid.dataItem($(this));
var ID1 = dataItem.ProductID;
var ID2 = dataItem.ProductID2;}

函数GetID()将通过行的命令列在网格上调用:

        columns.Command(command =>
        {
            command.Custom("Edit").Text("Edit").Click("GetIDs");
            command.Destroy();
        });

答案 1 :(得分:0)

也许这是安装脚本中的错误,或者不是,我不知道,但问题是Kendo安装程序没有安装一个关键文件。即...

当你通过NuGet Install-Package KendoIOWeb安装Kendo软件包时,安装文件kendo.aspnetmvc.min.js,这个文件是至关重要的。有了这一切,我得到了删除的确认,id是通过POST而不是GET发送的(我确切地说是如何配置它们),页面显示在行动之后,简而言之 - 最后它是有道理的。

所以要修复它,不要乱码,只需从Kendo网站手动下载zip文件,获取此文件并将其放在Content目录中。

由于Kendo的NuGet安装程序创建了这样的结构Content\kendo\2012.2.710,以下是我用Content\kendo这个额外的.js文件的所有文件,这样它会提醒我这是手动添加。