我有一个使用subGrid的网格(版本4.1.1)。我正在使用loadonce:true并滚动:1。当网格首次加载时,我可以打开subGrids没有问题,直到我将主网格向下滚动到加载更多数据的点。之后,不会打开或关闭子网格。如果我点击加号图标,我会看到“正在加载...”,但没有任何反应。我甚至无法关闭之前打开过的subGrids。
这是我的网格定义:
$("#grid_sites").jqGrid({
url:'getgridxmlsites.php',
postData: {detailid: function() {return $('#hdnDetailId').val(); }},
datatype: 'xml',
height: 260,
width: 832,
shrinkToFit: false,
caption:'',
colNames :['studydetailid', 'Site', 'Name', 'Status', 'Location'],
colModel :[
{name:'detailid', index:'detailid', width:0, hidden: true },
{name:'sitenumber', index:'sitenumber', width:60, align:'right'},
{name:'name', index:'name', width:230},
{name:'status', index:'status', width:110, align:'center'},
{name:'location', index:'location', width:74}
],
pager:'pager_sites',
scroll: 1,
viewrecords:true,
sortable:true,
sortname: 'sitenumber',
autowidth: true,
pgbuttons: false,
loadonce: true,
// gridview: true, // Cannot be used when using subGrid.
onSelectRow: function(id){ gridRowSelect(id) },
subGrid: true,
subGridUrl: 'getgridxmldatabysite.php',
subgridtype: 'xml',
subGridModel: [{
name: ['Owner', 'Phone', 'Status'],
width: [120, 100, 100],
align: ['left', 'left', 'left'],
params: ['detailid']
}],
subGridOptions: { reloadOnExpand : false }
});
我希望你能提供帮助。
答案 0 :(得分:3)
我遇到了类似的问题。看起来jqgrid中的addSubGrid函数正在添加一个click事件来将子网格切换到表中的每一行(而不仅仅是刚刚加载的那一行)。
这导致新行表现良好但第一组设置为快速展开然后折叠(两个点击处理程序)。当另一组数据被加载时,第一组行正常工作(尽管它们会扩展,折叠和再次展开),但第二组不再有效。
在尝试弄清楚我是否遗漏了JSON中的某些行元数据时,我在addJSON和addSubGrid的组合中迷失了方向。现在我只修改了这一行:
$(ts.rows[i].cells[pos]).bind('click', function(e) {
为:
$(ts.rows[i].cells[pos]).unbind('click');
$(ts.rows[i].cells[pos]).bind('click', function(e) {
一切似乎按预期工作。这适用于jqGrid的4.2.0版。我仍然不确定这是一个错误,配置问题还是数据问题,但至少我还在工作。
答案 1 :(得分:0)
典型的"Loading..."
表示处理服务器响应时出错。我建议您使用jquery.jqGrid.src.js
代替jquery.jqGrid.min.js
并在调试器中启动您的页面。例如,您可以使用Internet Explorer的开发人员工具。这样做你应该按 F12 启动开发人员工具,然后选择“脚本”并单击“开始调试”按钮。页面将在出错时停止,或者您将在右侧窗格的“Colsole”中看到一些其他信息。
由于数据处理的复杂性和不同的已知错误或问题,我个人不使用scroll: 1
选项。在我看来,您使用不兼容的参数组合。我建议您删除loadonce: true
或scroll: 1
参数。
答案 2 :(得分:0)
在您的配置中,您不设置rowNum。所以我相信jqgrid将使用默认的rowNum,即20。由于Robert Simmons提到的点击绑定问题,导致滚动问题。
解决此问题而无需更改jqgrid代码的另一种方法是将rowNum设置为-1。这将获得所有行,这应该没问题,因为您使用的是本地数据。但是,此修补程序可能不适用于以前的4.6.0版本。 (有关将rowNum设置为-1的更多信息,请参阅How to show all rows in the jqGrid?)。在4.6.0之前的版本中,我认为主要解决方案是将rowNum设置为大数。