2011-04-15 55 views
1

我有一个JQGrid和一个直到昨天工作正常的子网格(简单的,不是网格)。然后我发现了强大的标志loadonce = true,它使我可以免费分页,搜索等。但是,因为我已经启用加载子网格停止工作,当我点击加号来扩大一行时,加载框出现,并没有消失。如果我删除loadonce = true,那么一切都按预期工作。这里是我的JavaScript,在此先感谢。如果loadonce设置为true,JQGrid子网格不会加载

$("#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}); 
+0

如果使用'subGridType:“xml”',至少在理论上''loadonce:true'参数应该没有问题。当然包括'loadonce:true'后面执行另一个代码。如果你有一个实例,url可以帮助分析问题。如果您发布了更多可用于重现问题的完整示例,我可以尝试帮助您。 – Oleg 2011-04-15 22:05:47

+0

任何示例都可以。添加loadonce = true例如http://www.secondpersonplural.ca/jqgriddocs/_2eb0giikm.htm – Tarelli 2011-04-16 00:18:27

+0

也发现了类似的问题http://stackoverflow.com/questions/4316422/jqgrid-problem-binding-subgrid – Tarelli 2011-04-16 00:22:49

回答

4

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

subGridType: "xml" 

,而不是正确的

subgridtype: "xml" 

(见the documentation)。所以未知参数subGridType将在您当前的网格中被忽略,并且将使用datatype的值。在使用loadonce:true的情况下,在第一次电网加载之后datatype的值更改为local

此外,我会建议你使用unobtrusive JavaScript做'点击'绑定。如果网格中有许多行,则当前的实现非常缓慢。见the answer其中描述了更有效的方法。

+0

谢谢奥列格,第二次你救我的屁股:) – Tarelli 2011-04-16 15:33:52

+0

@泰雷利:不客气! – Oleg 2011-04-16 15:44:06

相关问题