jqgrid rownumbers 后树形结构不显示
时间: 2023-08-06 07:09:43 浏览: 51
如果您使用 jqGrid 的 rownumbers 功能来显示行号,并且您也使用了 TreeGrid 插件来显示树形结构,但是树形结构没有显示出来,那么有可能是因为 jqGrid 的 rownumbers 功能与 TreeGrid 插件存在冲突。
解决此问题的方法是,您需要在 jqGrid 初始化时,将 rownumbers 参数设为 false,然后在 TreeGrid 的 colModel 中添加一个名为 'rn' 的列,并且将其属性 hidden 设置为 true,代码如下:
```javascript
$("#grid").jqGrid({
// 将 rownumbers 参数设为 false
rownumbers: false,
// 其他参数...
colModel: [
{
// 添加一个名为 'rn' 的列
name: 'rn',
// 将 hidden 属性设为 true
hidden: true
},
// 其他列...
],
// 其他参数...
treeGrid: true,
// 其他参数...
});
```
这样就可以同时使用 rownumbers 和 TreeGrid 插件了。
相关问题
jqgrid 树树形结构显示行号
要在 jqGrid 的树形结构中显示行号,可以使用 `treeReader` 属性中的 `level_field` 字段和 `rownum` 方法。
首先,在 jqGrid 的 colModel 中添加一个隐藏列,用于保存每个节点的层级信息:
```javascript
{
name: 'level',
hidden: true,
width: 1,
sortable: false
}
```
然后,在 `treeReader` 属性中设置 `level_field` 为该列的名称:
```javascript
treeReader: {
level_field: 'level'
}
```
最后,使用 `rownum` 方法来计算每个节点的行号,并在 `gridComplete` 事件中更新每行的行号:
```javascript
gridComplete: function() {
var rows = $(this).jqGrid('getRowData');
for (var i = 0; i < rows.length; i++) {
var row = rows[i];
var level = parseInt(row.level);
var rownum = i + 1;
if (level > 0) {
rownum = $(this).jqGrid('getNodeParent', row).rownum + '.' + rownum;
}
$(this).jqGrid('setRowData', row.id, {rownum: rownum});
}
}
```
这样,就可以在树形结构中显示行号了。
jqgrid 4.6 树形结构 设置多选
在 jqGrid 4.6 版本中,启用树形网格的方式略有不同。需要将 `gridview` 选项设置为 `false`,以便 jqGrid 正确处理树形结构。此外,需要将 `treeGrid` 选项设置为 `true`,以启用树形网格功能。例如:
```
$("#myGrid").jqGrid({
url: "myData.json",
datatype: "json",
colModel: [
{ name: "id", label: "ID", width: 50 },
{ name: "name", label: "Name", width: 100 },
{ name: "address", label: "Address", width: 150 }
],
gridview: false, // 关闭 gridview
treeGrid: true, // 启用树形网格
ExpandColumn: "name", // 显示展开/收起图标的列名
multiselect: true, // 启用多选
rowNum: 10,
rowList: [10, 20, 30],
pager: "#myPager",
caption: "My Grid"
});
```
在启用多选功能后,可以使用 `getGridParam('selarrrow')` 方法获取当前选中的行的 ID 数组。但是,在树形结构中,如果用户选择了一个父节点,则该节点下的所有子节点都会被选中。为了避免这种情况,需要使用 `getTreeSelectedRows` 方法来获取当前选中的行的 ID 数组。此方法将返回一个数组,其中包含所有当前选中行的 ID,但不包括其子节点的 ID。例如:
```
var selectedRows = $("#myGrid").jqGrid('getTreeSelectedRows');
```
注意,在使用 `getTreeSelectedRows` 方法时,需要将 `treeGrid: true` 和 `multiselect: true` 选项同时设置为 `true`,才能正确获取选中的行的 ID 数组。