上次我在我的应用程序中更改了jqGrid(4.6.0到free-jqgrid 4.8.0)和jQuery(1.7.2到2.1.3)的版本。
在我的父网格中,我有2个可见列,每个列的宽度为100 px,而在子网格中有5个可见列,每列宽度为200 px。在以前的版本中,子网格位于顶部,因此我可以看到子网格中的所有列,而无需调整任何列的大小
更改后获得相同的结果如果我想查看来自子网格的所有cols我需要做变通方法并添加空列(我不想做的事情)。有什么我可以做的吗?
它可以在父网格中使用更大的第二列,但我不想调整它的大小,我更喜欢用100 px保留它。
网格的定义:
function loadFirstGrid() {
var data = {
"page": "1",
"records": "3",
"rows": [
{ "DataID": "1", "DataDesc": "Test 1", "DataTitle": "Test 1" },
{ "DataID": "2", "DataDesc": "Test 2", "DataTitle": "Test 2" },
{ "DataID": "3", "DataDesc": "Test 3", "DataTitle": "Test 3" }
]
};
$("#FirstGrid").jqGrid({
datatype: "xml",
mtype: "GET",
contentType: "text/xml",
colNames: ['DataID', 'DataDesc', 'DataTitle'],
colModel: [
{ name: 'DataID', index: 'DataID', hidden: true, key: true },
{ name: 'DataDesc', index: 'DataDesc', width: 100 },
{ name: 'DataTitle', index: 'DataTitle', width: 100 }
],
rowNum: 10000,
datatype: "jsonstring",
datastr: data,
ignoreCase: true,
sortname: 'DataDesc',
sortorder: 'asc',
emtyrecords: "Nothing to display",
viewrecords: true,
sortable: true,
height: "100%",
shrinkToFit: false,
loadonce: true,
scrollOffset: 0,
width: 2000,
caption: 'First Grid',
subGrid: true,
subGridRowExpanded: loadSubGrid,
gridview: false
});
}
function loadSubGrid(subgrid_id, row_id) {
var data = {
"page": "1",
"records": "3",
"rows": [
{ "SubGridID": "1", "FirstCol": "Test 1", "SecondCol": "Test 1", "ThirdCol": "Test 1", "FourthCol": "Test 1", "FifthCol": "Test 1" },
{ "SubGridID": "2", "FirstCol": "Test 2", "SecondCol": "Test 2", "ThirdCol": "Test 1", "FourthCol": "Test 1", "FifthCol": "Test 1" },
{ "SubGridID": "3", "FirstCol": "Test 3", "SecondCol": "Test 3", "ThirdCol": "Test 1", "FourthCol": "Test 1", "FifthCol": "Test 1" }
]
};
var subgrid_table_id;
var dataID = $("#FirstGrid").jqGrid('getRowData', row_id).DataID;
subgrid_table_id = subgrid_id + "_SubGrid";
$("#" + subgrid_id).html("<div><table id='" + subgrid_table_id + "' class='scroll'></table></div>");
$("#" + subgrid_table_id).jqGrid({
datatype: "xml",
mtype: "GET",
contentType: "text/xml",
colNames: ['SubGridID', 'FirstCol', 'SecondCol', 'ThirdCol', 'FourthCol', 'FifthCol'],
colModel: [
{ name: 'SubGridID', index: 'SubGridID', hidden: true, key: true },
{ name: 'FirstCol', index: 'FirstCol', editable: false, width: 200 },
{ name: 'SecondCol', index: 'SecondCol', width: 200 },
{ name: 'ThirdCol', index: 'ThirdCol', width: 200 },
{ name: 'FourthCol', index: 'FourthCol', width: 200 },
{ name: 'FifthCol', index: 'FifthCol', width: 200 },
],
rowNum: 10000,
datatype: "jsonstring",
datastr: data,
ignoreCase: true,
sortname: 'FirstCol',
sortorder: 'asc',
emtyrecords: "Nothing to display",
viewrecords: true,
sortable: true,
height: "100%",
shrinkToFit: false,
loadonce: true,
scrollOffset: 0,
width: 1900,
caption: 'SubGrid',
gridview: false
});
}
修改:
演示可用here
谢谢!
答案 0 :(得分:0)
与jqGrid 4.7相比,free jqGrid 4.8的CSS结构有很多变化。所以我建议以另一种方式解决你的问题。您可以在父网格的末尾添加新的最后一列。该列可以有空标题。因此,父网格之前看起来会完全一致,但现在您将不会遇到所描述的问题。
我将您的演示修改为以下http://jsfiddle.net/OlegKi/2tkkqbeq/4/。我删除了许多不需要的设置,例如class='scroll'
,datatype: "xml"
(不能与一起使用和datatype: "jsonstring"
)。我从index
删除了所有colModel
属性。我删除了一些现在默认的其他属性。
删除gridview: false
属性非常重要,这会使网格工作缓慢且没有其他优势。我建议您将datatype: "local"
与data: data.rows
一起使用,而不是datatype: "jsonstring", datastr: data
。更改的主要优点:输入数据将按jqGrid排序,对应您使用的sortname
选项。
我建议您在子网格中使用autowidth: true
。
我在您的演示中进行的最后但非常重要的更改是在子网格中包含选项idPrefix: "s_" + row_id + "_"
。如果不使用该选项,您将在页面上显示 id duplicates ,因为主网格和子网格将具有相同的id
值(1,2,3)。