2

我有一个使用 subGrid 的网格(版本 4.1.1)。我正在使用 loadonce: true 和 scroll: 1. 当网格第一次加载时,我可以毫无问题地打开 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 }
});

我希望你能帮忙。

4

3 回答 3

3

我遇到了类似的问题。看起来 jqgrid 中的 addSubGrid 函数正在添加一个单击事件以将子网格切换到表中的每一行(不仅仅是刚刚加载的行)。

这导致新行表现良好,但第一组快速展开然后折叠(两个单击处理程序)。当另一组数据被加载时,第一组行工作正常(尽管它们会再次展开、折叠和展开),但第二组不再工作。

当我试图弄清楚我是否遗漏了 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 版本。我仍然不确定这是错误、配置问题还是数据问题,但至少我正在重新工作。

于 2011-11-27T01:00:44.650 回答
0

典型的"Loading..."意思是在处理服务器响应时出错。我建议您使用jquery.jqGrid.src.js而不是jquery.jqGrid.min.js在调试器中启动您的页面。例如,您可以使用 Internet Explorer 的开发人员工具。这样做你应该按下F12启动开发工具,然后选择“脚本”并点击“开始调试”按钮。页面将因错误而停止,或者您将在右侧窗格的“Colsole”中看到一些附加信息。

scroll: 1由于数据处理的复杂性和不同的已知错误或问题,我个人不使用选项。在我看来,您使用了不兼容的参数组合。我建议您删除其中一个loadonce: truescroll: 1参数。

于 2011-10-19T08:50:59.783 回答
0

在您的配置中,您没有设置 rowNum。所以我相信 jqgrid 将使用默认的 rowNum,即 20。由于 Robert Simmons 提到的点击绑定问题,这会导致滚动问题。

无需更改 jqgrid 代码即可解决此问题的另一种方法是将 rowNum 设置为 -1。这只会获取所有行,这应该没问题,因为您使用的是本地数据。但是,此修复在 4.6.0 之前的版本中可能不起作用。(有关将 rowNum 设置为 -1 的更多信息,请参阅如何显示 jqGrid 中的所有行?)。在 4.6.0 之前的版本中,我认为主要的解决方案是将 rowNum 设置为一个很大的数字。

于 2014-06-22T04:41:30.833 回答