如果 loadonce 设置为 true 则 JQGrid 子网格不会加载



我有一个带有子网格的JQGrid(简单的一个,而不是网格),直到昨天才工作得很好。然后我发现了强大的标志loadonce=true,它可以免费为我提供分页、搜索等功能。但是因为我已经启用负载一旦子网格停止工作,当我点击加号扩展一行加载框出现,不会消失。如果我删除loadonce=true一切工作如预期。这是我的javascript,提前感谢。

$("#testsTable").jqGrid({
    mtype: "POST",
    url: "GetCurrentStatusServlet",
    datatype: "xml",
    colNames:['Suite', 'Test Case', 'Last Update', 'Status','Actions'],
    colModel:[
              {name:'suite',index:'suite', width:50, sorttype:"int"},
              {name:'name',index:'name', width:300, formatter:nameFmatter},
              {name:'lastupdate',index:'lastupdate', width:150, formatter:"date"},
              {name:'status',index:'status', width:50, formatter: fmt_status,align:"center"},
              {name:'act',index:'act', width:100, align:"left"} 
              ],
              rowNum:150,
              width:1200,
              height:800,
              rowList:[150,300,500],
              pager: $('#pager1'),
              viewrecords: true,
              multiselect: true,
              caption: buildName,
              sortorder: "asc",
              sortname: "suite",
              subGrid: true,
              subGridUrl : "GetCurrentSubGridStatusServlet",
              subGridType: "xml",
              subGridModel: [ {
                  name:  ['Test Method', 'Last Update', 'Status'],
                  width : [250, 200, 100],
                  params: ['name']
              }],
            loadonce: true,
                  gridComplete: function(){
                      var ids = $("#testsTable").jqGrid('getDataIDs');
                      for(var i=0;i < ids.length;i++){
                          var cl = ids[i];
                          var test = new Array();
                          test.push($("#testsTable").getCell(cl, 'name'));
                          run = "<button class="runBtn" onclick="runTests('"+test+"')">Run</>"; 
                          log = "<button class="logBtn" onclick=";">Log</>"; 
                          $("#testsTable").jqGrid('setRowData',ids[i],{act:run+log});
                      } 
                      setupButtons();
                  }
});
$("#testsTable").jqGrid('navGrid','#pager1',{add:false,edit:false,del:false});

经过一些调试,我发现你的错误很容易:在你的网格中你使用

subGridType: "xml"

代替正确的

subgridtype: "xml"

(请参阅文档)。因此,在当前的网格中,未知参数subGridType将被忽略,而datatype的值将被使用。在loadonce:true被使用的情况下,datatype的值在第一次网格加载后变为local

另外,我建议你使用不显眼的JavaScript来使'click'绑定。如果您在网格中有许多行,则当前的实现非常慢。

相关内容

  • 没有找到相关文章

最新更新