9

我需要在 kendoGrid 中选择一个特定的行,但不是通过 data-uid(因为再次加载网格 dataSource 时 data-uid 会更改),而是通过行 itemID。我看到了帖子,但他们只按 uid 选择行,这不是我需要的,我实际上需要重新启动 HTML5 应用程序,并且在加载网格时,应该选择一个特定的项目。这就是我所看到的

演示:jsfiddle.net/ruse​​v/qvKRk/3/

例如,对象有OrderID as ID,每次加载网格时,它都是一样的,不像uid,我想知道我如何能够选择一行OrderID,而不是uid

4

4 回答 4

32

我猜你可以混合行 itemID 和 data.uid。

var grid = $("#Grid").data("kendoGrid");
var dataItem = $("#Grid").data("kendoGrid").dataSource.get(itemID);
var row = $("#Grid").data("kendoGrid").tbody.find("tr[data-uid='" + dataItem.uid + "']");
于 2014-09-03T11:41:00.677 回答
2

与 umais 提到的一样,更好的方法是遍历所有记录以找到您需要的记录,因为目前还没有内置功能。即使有数据页,我构建的功能也可以使用。我能想到的唯一其他方法是进行辅助 ajax 调用;但这很好用。请注意,我没有用超过 2000 条记录对其进行测试。

    var dataGrid = $("#GATIPS").data("kendoGrid").dataSource;
    var numOfRows = dataGrid.total();
    var currentPageSize = dataGrid.pageSize();
    dataGrid.pageSize(numOfRows);
    var dataGridData = dataGrid.data();
    for (var i = 0; i < numOfRows; i++) {
        if (dataGridData[i].uid == e)
            return dataGridData[i];
    }
    dataGrid.pageSize(currentPageSize); // reset the view

e 是 UID。但是,这可以代替您需要的任何变量,只需替换检查即可。

于 2015-02-13T16:59:54.503 回答
1

我设法解决的一项工作是遍历所有行并检查哪个行模型的 ID 等于参数,然后获取该行 data-uid 并通过 data-uid 选择项目。它对我来说很好,因为没有建议,这是目前更好的答案。

于 2013-08-19T09:16:26.393 回答
0

好吧,根据我所做的(并为我工作),即使解决方法不是最漂亮的,也可以使用您的模型 ID 和 ClientTemplate 再设置一个列,然后创建任何 html 对象(在我的情况下为 div)在里面给它一个你的id的html id,所以当你需要它时,你只需要去看看类似的东西:

    grid.dataItem($("td div#id").closest("tr"));

因为请记住 dataItem 方法正在等待选择器,然后您将 selectedItem 作为常规选择器。

编辑:我忘了说,你应该(或可以)使用 style 属性

    display:none

如果您不想显示该列。

于 2019-03-04T21:16:16.223 回答