6

我对 Kendo UI 完全陌生,所以也许我遗漏了一些东西,但是在阅读了文档 API 之后:http ://docs.kendoui.c​​om/api/framework/model似乎 Kendo 仅限于使用单个 ID。

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

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

有没有更明确的方法?

具体例子

专注于实质性的事情:

http://demos.kendoui.c​​om/web/grid/editing-inline.html

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

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

就我而言,它将是(我能想到的最简单的方法):

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

其中ProductComboId1Id2是如上所述编码的字符串。

解决方案(某种)

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

4

2 回答 2

12

您可以在单个网格上使用多个 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();
        });
于 2012-10-28T16:33:26.813 回答
0

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

当您通过 NuGet 安装 Kendo 包时,Install-Package KendoIOWeb不会安装文件kendo.aspnetmvc.min.js,而这个文件是至关重要的。突然之间,我得到了删除确认,ID 是通过 POST 而不是 GET 发送的(这正是我配置它们的方式),简而言之,页面在操作后显示 - 终于有意义了。

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

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

于 2012-10-28T19:19:13.037 回答