如何通过数据项ID在kendo网格中选择一行?

时间:2013-07-19 07:20:07

标签: kendo-ui kendo-grid

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

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

e.g。对象有OrderID as ID,每次加载网格时都会一样,与uid不同,我想知道如何选择OrderID行,而不是uid

4 个答案:

答案 0 :(得分:23)

我猜你会混合行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 + "']");

答案 1 :(得分: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

是UID。然而,这可以替代你需要的变量,只需更换支票即可。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

好吧,根据我所做的(和为我工作的),即使解决方法不是最漂亮的,还是用模型ID和ClientTemplate再设置一列,然后创建任何html对象( (在我的情况下)它的ID为它的html id,因此,无论何时需要它,您都只需要去看一下:

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

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

编辑: 我忘了说,您应该(或可以)使用样式属性

    display:none

如果您不想显示该列。