带有重复列的Jqgrid选择问题

我在Jqgrid中遇到了行选择问题。 我在网格中有重复的行。 每当我选择副本或它选择该重复行的第一个记录。

在此处输入图像描述

对于许多开始使用jqGrid的人来说,这是常见的问题。 如果使用具有id重复项的行填充网格,则存在这种奇怪的选择行为。 因此,了解jqGrid如何使用输入中的id非常重要

jqGrid使用内部HTML标记来显示网格。 对于任何网格,它使用

(表的主体 – 没有列标题),

(表的行)和

(表的表)。 例如,下面的HTML片段可以代表您的网格

 
16A11Add
1ChartEdit
1ChartDelete
1ChartView
15ManageEdit
16A11View
15ManageDelete

jqGrid的设计使得人们可以快速访问网格的任何一行 。 要实现快速访问,需要为每个

(表行)分配唯一的ID 。 您将在jqGrid使用的大多数方法或事件中找到rowid参数。 行的id应标识表的行集中的行。 在这种情况下,网格将如下所示

 
16A11Add
1ChartEdit
1ChartDelete
1ChartView
15ManageEdit
16A11View
15ManageDelete

根据HTML规范,任何HTML元素的id 在页面上必须是唯一的 。 例如,如果您确实为这些行指定了重复的ID

 
16A11Add
1ChartEdit
1ChartDelete
1ChartView
15ManageEdit
16A11View
15ManageDelete

该表仍然可以在大多数Web浏览器中显示,但使用网格可能确实存在问题。 例如,如果你选择这样的网格的最后一行,相应的jqGrid代码将找出15作为当前行的id,它将使用$("#15").addClass("ui-state-highlight")来突出显示当前行。 而不是代码将选择(将类“ui-state-highlight”)仅添加到具有id =“15” 的第一行

因此,如果填充用作jqGrid输入的JSON数据,则应该非常小心。 例如,以下数据可以表示网格包含:

 { "total": 1, "page": 1, "records": 7, "rows": [ { "id": "16", "cell": ["16", "A11", "Add"] }, { "id": "1", "cell": ["1", "Chart", "Add"] }, { "id": "1", "cell": ["1", "Chart", "Delete"] }, { "id": "1", "cell": ["1", "Chart", "View"] }, { "id": "15", "cell": ["15", "Manage", "Delete"] }, { "id": "16", "cell": ["16", "A11", "View"] }, { "id": "15", "cell": ["15", "Manage", "Edit"] } ] } 

JSON数据可以修复

 { "total": 1, "page": 1, "records": 7, "rows": [ { "id": "1", "cell": ["16", "A11", "Add"] }, { "id": "2", "cell": ["1", "Chart", "Add"] }, { "id": "3", "cell": ["1", "Chart", "Delete"] }, { "id": "4", "cell": ["1", "Chart", "View"] }, { "id": "5", "cell": ["15", "Manage", "Delete"] }, { "id": "6", "cell": ["16", "A11", "View"] }, { "id": "7", "cell": ["15", "Manage", "Edit"] } ] } 

或者

 { "total": 1, "page": 1, "records": 7, "rows": [ { "id": "16_Add", "cell": ["16", "A11", "Add"] }, { "id": "1_Add", "cell": ["1", "Chart", "Add"] }, { "id": "1_Delete", "cell": ["1", "Chart", "Delete"] }, { "id": "1_View", "cell": ["1", "Chart", "View"] }, { "id": "15_Delete", "cell": ["15", "Manage", "Delete"] }, { "id": "16_View", "cell": ["16", "A11", "View"] }, { "id": "15_Edit", "cell": ["15", "Manage", "Edit"] } ] } 

例如。 然后世界(包括网格)将变得可以。