【问题标题】:How to select a row in kendo grid by data item ID?如何通过数据项 ID 在剑道网格中选择一行?
【发布时间】:2013-07-18 09:27:58
【问题描述】:

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

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

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

【问题讨论】:

    标签: kendo-ui kendo-grid


    【解决方案1】:

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

    【讨论】:

    • 还是没有其他简单的方法?
    【解决方案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。但是,这可以替换您需要的任何变量,只需替换检查即可。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • @RuiMartins 通过示例代码提供了完整而简洁的答案。如果您通过 Telerik 论坛进行选择,那么在那里也可以找到相同的信息。无需遍历所有数据行。假设您使用模型,dataSource.get(OrderID) 方法将返回数据项:模型 ID 可从 id 字段中获得;行元素的 UID 可从 uid 字段获得。使用data-uid 属性获取行元素。
      • 对我来说,它使用 dataSource.getByUid(>)
      【解决方案4】:

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

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

      因为请记住,dataItem 方法正在等待选择器,所以您将获得您的 selectedItem 作为常规选择器。

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

          display:none
      

      如果您不想显示该列。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-11
        • 1970-01-01
        • 1970-01-01
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多