2015-04-20 90 views
15

擴大我有一個jqGrid的有兩個子網格和groupingView(),當我的數據從服務器加載到我的亞格並不想擴大電網。只有當我頁面或點擊刷新按鈕子網格展開,或者當我設置加載:假或取出groupingView()它將擴大,一切工作正常,但然後我出口到Excel沒有顯示任何數據。我希望我的子網格在數據首次加載時展開,而不是在我刷新或頁面後展開!jqGrid的亞格不是第一次加載

我已經試過:

$MyGrid.jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid'); 

,並試圖使一個觸發條件上loadComplete()刷新按鈕

*$(".ui-icon-refresh").each(function() { 
    $(this).trigger("click"); 
     });* 

這觸發按鈕不工作單擊時,但它不會在loadComplete()函數中自動啓動。

這裏是我的javascript:

function CreateOrdSummaryTable() 
      { 
      if ($("#DataTab_2").length === 0) 
      { 
       $("#tdBotRight").html("<table id='DataTab_2' class='dataContent' border='1' align='top'></table>" + 
          "<div id='PagerDataTab_2'></div>"); 
      } 

      var $tableOrdSummary = $("#DataTab_2");  

      $tableOrdSummary.jqGrid({ 
       url: '/Ord/WS/OrderWebSummary.php',    
       colNames: ["Sum of Order Mass","Customer", "Case", "Associated Mass" ,"Order Mass","Invoiced Mass","Shipped Mass","FGI Mass"], 
       colModel: [     
       { name: "ORDITM", index: "ORDITM", resizable: true, width: 120}, 
       { name: "CUSTOMER", index: "CUSTOMER", resizable: true, width: 250}, 
       { name: "CASES", index: "CASES", summaryTpl: "<i>Order Group Total:</i>", summaryType: "sum", resizable: true, width: 250},     
       { name: "ASSMASS", index: "ASSMASS", summaryTpl: "<i>{0}</i>", summaryType: "sum", resizable: true, width: 165, formatter: "integer"},     
       { name: "ORDMASS", index: "ORDMASS", summaryTpl: "<i>{0}</i>", summaryType: "sum", resizable: true, width: 115, formatter: "integer"}, 
       { name: "DIST", index: "DIST", summaryTpl: "<i>{0}</i>", summaryType: "sum", resizable: true, width: 130, formatter: "integer"}, 
       { name: "WIP", index: "WIP", summaryTpl: "<i>{0}</i>", summaryType: "sum", resizable: true, width: 130, formatter: "integer"}, 
       { name: "MDB", index: "MDB", summaryTpl: "<i>{0}</i>", summaryType: "sum", resizable: true, width: 110, formatter: "integer"}    
       ], 
       pager: jQuery("#PagerDataTab_2"), 
       shrinkToFit: false, 
       autoWidth: false, 
       caption: "Order Summary", 
       height: "100%", 
       rowNum: 1000,  
       //rowList: [50,100,200], 
       loadonce: false, //This is to get the Paging to turn on if set to (true) 
       gridview: true,        
       footerrow: true, 
       userDataOnFooter: true, 
       grouping : true,    
       groupingView : { 
        groupField : ["ORDITM"], 
        groupColumnShow : [true], 
        groupText: [ // user the name of a column with curly braces to use it in a summary expression. 
           // {0} is the formula placeholder for the column (defined by the summaryType property 
           "<i><b>{0} - {1} Order(s)</b></i>" 
           ], 
        showSummaryOnHide: true, 
        groupSummary : [true], 
        groupCollapse : false     
       }, 
     loadComplete: function() { 
     var AssSum = parseInt($tableOrdSummary.jqGrid('getCol', 'ASSMASS', false, 'sum')); 
     var OrdSum = parseInt($tableOrdSummary.jqGrid('getCol', 'ORDMASS', false, 'sum'));    
     var InvSum = parseInt($tableOrdSummary.jqGrid('getCol', 'DIST', false, 'sum')); 
     var ShpSum = parseInt($tableOrdSummary.jqGrid('getCol', 'WIP', false, 'sum')); 
     var FGISum = parseInt($tableOrdSummary.jqGrid('getCol', 'MDB', false, 'sum'));  
     $tableOrdSummary.jqGrid('footerData', 'set', 
     { 
      CASES: '<i><b>Grand Total:</b></i>', 
      ASSMASS: AssSum, 
      ORDMASS: OrdSum, 
      DIST: InvSum, 
      WIP: ShpSum, 
      MDB: FGISum 
     }); 
     },  
     postData: { 
     "GroupID": function() { 
       return groupID(); 
       } 
      },    
     subGrid: true,   
     subGridOptions: { 
      "plusicon" : "ui-icon-triangle-1-e", 
      "minusicon" : "ui-icon-triangle-1-s", 
      "openicon" : "ui-icon-arrowreturn-1-e", 
      "expandOnLoad" : false, 
      "reloadOnExpand" : true, 
      "selectOnExpand" : true 
     },  
     subGridRowExpanded: function(subgrid_id, row_id) { 
     var subgrid_table_id, pager_id; 
     subgrid_table_id = subgrid_id + "_t"; 
     pager_id = "p_" + subgrid_table_id; 
     $("#"+subgrid_id).html("<table id='"+subgrid_table_id+"' class='scroll'></table><div id='"+pager_id+"' class='scroll'></div>"); 
     jQuery("#"+subgrid_table_id).jqGrid({ 
      url:"/Ord/WS/OrderItemSummary.php",  
      datatype: "json", 
       colNames: ["Item", "RFD Date","Associated Mass", "Order Mass", "Invoiced Mass", "Shipped Mass", "FGI Mass"], 
       colModel: [      
       { name: "ITEM", index: "ITEM", resizable: true, width: 60},     
       { name: "RFDDATE", index: "RFDDATE", summaryTpl : "<i>Total:</i>", summaryType: "sum", resizable: true, width: 135},    
       { name: "ASSMASS", index: "ASSMASS", summaryTpl: "<i>{0}</i>", summaryType: "sum", resizable: true, width: 180, formatter: "integer"},     
       { name: "ORDMASS", index: "ORDMASS", summaryTpl: "<i>{0}</i>", summaryType: "sum", resizable: true, width: 115, formatter: "integer"}, 
       { name: "DIST", index: "DIST", summaryTpl: "<i>{0}</i>", summaryType: "sum", formatter: "integer", resizable: true, width: 130}, 
       { name: "WIP", index: "WIP", summaryTpl: "<i>{0}</i>", summaryType: "sum", formatter: "integer", resizable: true, width: 130}, 
       { name: "MDB", index: "MDB", summaryTpl: "<i>{0}</i>", summaryType: "sum", formatter: "integer", resizable: true, width: 115}    
       ], 
      rowNum:50, 
      pager: pager_id, 
      shrinkToFit: false, 
      autoWidth: false,   
      height: '100%', 
      caption: "Item Summary", 
//    footerrow: true, 
//    userDataOnFooter: true,   
       grouping : true,    
       groupingView : { 
        groupField : ["ITEM"], 
        groupColumnShow : [false], 
        groupText: [ // user the name of a column with curly braces to use it in a summary expression. 
           // {0} is the formula placeholder for the column (defined by the summaryType property 
           "<i><b>Item(s): {0}</b></i>" 
           ], 
        groupOrder: ["asc"], 
        groupSummary : [true], 
        groupCollapse : false, 
        groupDataSorted : true 
       }, 
     loadComplete: function() { 
//   var InvSum = parseInt(jQuery("#"+subgrid_table_id).jqGrid('getCol', 'DIST', false, 'sum')); 
//   var ShpSum = parseInt(jQuery("#"+subgrid_table_id).jqGrid('getCol', 'WIP', false, 'sum')); 
//   var FGISum = parseInt(jQuery("#"+subgrid_table_id).jqGrid('getCol', 'MDB', false, 'sum')); 
//   var AssSum = parseInt(jQuery("#"+subgrid_table_id).jqGrid('getCol', 'ASSMASS', false, 'sum')); 
//   var OrdSum = parseInt(jQuery("#"+subgrid_table_id).jqGrid('getCol', 'ORDMASS', false, 'sum'));   
//   jQuery("#"+subgrid_table_id).jqGrid('footerData', 'set', 
//   { 
//   RFDDATE: '<i><b>Grand Total:</b></i>', 
//   ASSMASS: AssSum, 
//   ORDMASS: OrdSum, 
//   DIST: InvSum, 
//   WIP: ShpSum, 
//   MDB: FGISum 
//   }); 

     },  
      postData: { 
     "GroupRwID": function() { 
     var myString = onRowSelected(row_id); 
     var finalString = groupRowID() + myString; 
     //console.log(finalString); 
     return finalString; 
       } 
      }, 
     subGrid: true,   
     subGridOptions: { 
      "plusicon" : "ui-icon-triangle-1-e", 
      "minusicon" : "ui-icon-triangle-1-s", 
      "openicon" : "ui-icon-arrowreturn-1-e", 
      "expandOnLoad" : false, 
      "reloadOnExpand" : true, 
      "selectOnExpand" : true 
     },  
     subGridRowExpanded: function(subgrid2_id, row2_id) { 
     var subgrid_table_id2, pager_id2; 
     subgrid_table_id2 = subgrid2_id + "_t"; 
     pager_id = "p_" + subgrid_table_id2; 
     $("#"+subgrid2_id).html("<table id='"+subgrid_table_id2+"' class='scroll'></table><div id='"+pager_id2+"' class='scroll'></div>"); 
     jQuery("#"+subgrid_table_id2).jqGrid({ 
      url:"/Ord/WS/OrderCaseSummary.php",  
      datatype: "json", 
       colNames: ["Case", "Associated Mass"], 
       colModel: [ 
       { name: "CASES", index: "CASES", summaryTpl : "<i>Total:</i>", summaryType: "sum", key: true, resizable: true, width: 130},     
       { name: "ASSMASS", index: "ASSMASS", summaryTpl: "<i>{0}</i>", summaryType: "sum", resizable: true, width: 180, formatter: "integer"}       
       ], 
      rowNum:50, 
      pager: pager_id, 
      shrinkToFit: false, 
      autoWidth: false,   
      height: '100%', 
      caption: "Cases Summary",    
      postData: { 
     "CaseSum": function() { 
     var selRwData = '"CASES":"' + cases + '",' + '"ORDITM":"' + ordItm + '",' + '"CUSTOMER":"' + customer + '",' + '"ASSMASS":"' + assMass + '"' +"}"; 
     var finalStr = groupRowID() + selRwData; 
     return finalStr; 
       } 
      }   
     });   
     $('#'+subgrid_table_id2).addClass("subGrids"); 
     }    
     });   
     $('#'+subgrid_table_id).addClass("subGrids"); 
     }  
      }); 

     $tableOrdSummary.jqGrid("navGrid","#PagerDataTab_2", 
     {edit:false,add:false,del:false, refreshstat:"current"}, 
     {}, 
     {}, 
     {}, 
     {multipleSearch:false, multipleGroup:false, showQuery: false} 
     ); 
} 

     function ordSummaryView() 
     { 
     $("#DataTab_2").jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid'); //This makes the call to refresh the grid. 
     } 

     function onRowSelected(rowId) 
     { 
     var $tableOrdSummary = $("#DataTab_2"); 
     var rowData = $tableOrdSummary.jqGrid ('getRowData', rowId); 
     cases = rowData.CASES; 
     customer = rowData.CUSTOMER; 
     assMass = rowData.ASSMASS; 
     ordItm = rowData.ORDITM; 

     var selRwData = '"CASES":"' + cases + '",' + '"ORDITM":"' + ordItm + '",' + '"CUSTOMER":"' + customer + '",' + '"ASSMASS":"' + assMass + '"' +"}"; 

     return selRwData; 
     } 

     function getTotals() 
     { 
     var $tableOrdSummary = $("#DataTab_2"); 
     ids = $tableOrdSummary.jqGrid('getDataIDs'); 
     int = 0; 
     for (var i = 0; i < ids.length; i++) 
     { 
      var rowId = ids[i]; 
      var rowData = $tableOrdSummary.jqGrid ('getRowData', rowId); 

      var distTotal = rowData.DIST; 
      int += parseInt(distTotal); 
     } 
     return int; 
     } 

     $(document).ready(function() 
     { 
     CreateOrdSummaryTable(); 

     }); 

功能爲GroupRowID()

function groupRowID() 
    { 

    var jsonSearchString = ""; 
    var sGroupId = <?php echo "'" . $sGroupId . "'" ; ?>; 
    jsonSearchString = '"GROUPID":"' + sGroupId + '",'; 
    return "{" + jsonSearchString; 
    } 
+1

**您使用的是哪個版本的jqGrid?**。對不起,但你的代碼中有很多東西不清楚。 '#tdBotRight'最初是在頁面上存在的,還是您生成它並動態放置它?爲什麼你的代碼包含外部'{...}'?代碼'$(「#DataTab_2」).jqGrid()。setGridParam({datatype:'local',..}))。trigger(「reloadGrid」);''** load **同一個網格。你明確地使用'loadonce:false',但是嘗試做一些關閉事情,但方式不對。你的目標是什麼? – Oleg

+0

此外你的問題是關於「子網格不擴大在第一次加載」。你想展開**所有子網格**或加載時的某個特定子網格嗎?你使用'subGridOptions:{...,expandOnLoad:false,...}'。爲什麼子網應該擴大? jqGrid發送Ajax請求到'/ Ord/WS/OrderWebSummary.php'來加載主網格數據,然後你想發送多個請求到'/ Ord/WS/OrderItemSummary.php'爲每個子網格?加載主網格時加載所有子網格信息是否更好? – Oleg

+0

我不希望子網格自動展開,這將是expandOnLoad:true。當數據首次在主網格中加載時,我按下子網格箭頭,它不會擴大!只有當我翻頁或刷新時,點擊時纔會展開。我明白你對多個請求的看法,但不管它應該工作。 – Wayne

回答

1

按照你的例子,如果你這段代碼添加到您的主網架的選擇,你的子網格將在加載時打開完成

loadComplete: function(){$(".ui-widget-content.jqgrow.ui-row-ltr td a").click()}, 

你可以在這裏看到:https://jsfiddle.net/f4vosxqo/1/

0

除了S.Pini的回答,使用gridComplete而不是loadComplete。這種不同之處在於loadComplete在每次發出服務器請求並加載網格時觸發,gridComplete在所有加載過程完成後僅觸發一次。代碼示例:

gridComplete: function(){$(".ui-widget-content.jqgrow.ui-row-ltr td a").click()},