2011-05-16 14 views
0

我遇到我的html頁面3個格,我使用不能排序多JQ電網

loadonce:真實的; datatype:xml;

數據之後已經加載我改變

數據類型:本地;

我這樣做,所以當我做排序或分頁,我不想調用重新加載。 這個效果很好,當我在我的頁面中只有一個網格,但是當我的頁面上有3個網格時,排序不起作用。

任何人都可以請幫忙。

this.createPortServerGrid = function(){ 
    //_this.rowDataLoaded = false; 
    _this.X$("#serverGrid").jqGrid({ 
     mtype : 'POST', 
     url : DXOP_SERVER, 
     datatype : "xml", 
     postData : { 
      swNote1 : '<epiq> <request> <action> <object>commline</object> <method>find</method> <language>enus</language> </action> <data> <row> <dynamic>0</dynamic> </row> </data> <sql> <orderby>devicename</orderby> </sql> </request> </epiq>' 
     }, 
     colModel : [ { 
      label : "Name", 
      name : 'name', 
      index : 'name', 
      xmlmap : "name" 
     }, { 
      label : "Port", 
      name : 'devicename', 
      index : 'devicename', 
      sorttype: 'int', 
      xmlmap : "devicename" 
     }, { 
      label : "Port State", 
      name : 'state', 
      index : 'state', 
      xmlmap : "state" 

     }, { 
      name : 'pk', 
      index : 'pk', 
      xmlmap : "pk", 
      hidden : true 
     }, { 
      name : 'childserverfk', 
      index : 'childserverfk', 
      xmlmap : "childserverfk", 
      hidden : true 
     }, 

     { 
      name : 'porttmplfk', 
      index : 'porttmplfk', 
      xmlmap : "porttmplfk", 
      hidden : true 
     } ], 

     xmlReader : { 
      root : "data", 
      row : "row", 
      repeatitems : false, 
      id : "pk" 
     }, 

     rowNum : 10, 
     height : 400, 
     autowidth : true, 
     rowList : [ 10, 20, 30 ], 
     pager : '#pager3', 
     altRows : true, 
     sortname : 'name', 
     loadonce : true, 
     recordpos : 'left', 
     viewrecords : true, 
     sortorder : "desc", 
     multiselect : false, 
     afterInsertRow : function(rowid, rowdata, rowelem) { 
      $('#' + rowid).contextMenu('port_portMenuJqGrid', 
_this.serverPortMenu); 
     }, 
     loadComplete : function(rowId) { 
      var sraw = _this.X$("#serverGrid").getGridParam('xmlRawData'); 
      handleErrorMessage(sraw); 
      _this.serverParseRowData(sraw); 
      _this.createPortTemplateGrid(); 

      _this.serverfilterGrid(); 
      if(_this.serPortSel != null){         
       _this.X$('#serverGrid').jqGrid('setSelection', 
_this.serPortSel); 
      } 
      _this.X$('#serverGrid').setGridParam({datatype:'local'}); 
      alert("********"+_this.X$('#serverGrid').setGridParam('datatype')[0]); 
     }, 
     onSelectRow : _this.loadServerGrid, 
     ondblClickRow : _this.editServerTemplate 

    }); 
}; 
this.createCurrentSessionGrid = function(){ 
    _this.X$("#currentTemplGrid").jqGrid({ 
     mtype : 'POST', 
     url : DXOP_SERVER, 
     datatype : "xml", 
     postData : { 
      swNote1 : '<epiq> <request> <action> <object>commline</object> <method>find</method> <language>enus</language> </action> <data> <row> <dynamic>1</dynamic> </row> </data> <sql> <orderby>devicename</orderby> </sql> </request> </epiq>' 
     }, 
     colModel : [ { 
      label : " Current File Name", 
      name : 'currentfilename', 
      index : 'currentfilename', 
      xmlmap : "currentfilename" 
     }, { 
      label : "Current Byte Sent", 
      name : 'currentbytessent', 
      index : 'currentbytessent', 
      xmlmap : "currentbytessent" 
     }, { 
      label : "Current Byte Recived", 
      name : 'currentbytesreceived', 
      index : 'currentbytesreceived', 
      xmlmap : "currentbytesreceived" 
     }, { 
      label : "Port State", 
      name : 'state', 
      index : 'state', 
      xmlmap : "state" 

     }, { 
      label : "Current Endpoint", 
      name : 'currentendpoint', 
      index : 'currentendpoint', 
      xmlmap : "currentendpoint" 

     }, { 
      label : "Current User", 
      name : 'dynamic', 
      index : 'dynamic', 
      xmlmap : "dynamic" 

     }, { 
      name : 'pk', 
      index : 'pk', 
      xmlmap : "pk", 
      hidden : true 
     } ], 

     xmlReader : { 
      root : "data", 
      row : "row", 
      repeatitems : false, 
      id : "pk" 
     }, 

     rowNum : 10, 
     height : 400, 
     autowidth : true, 
     rowList : [ 10, 20, 30 ], 
     pager : '#pager3', 
     altRows : true, 
     //loadonce : true, 
     sortname : 'id', 
     recordpos : 'left', 
     viewrecords : true, 
     sortorder : "desc", 
     multiselect : false, 
     afterInsertRow : function(rowid, rowdata, rowelem) { 
      $('#' + rowid).contextMenu('port_currentMenuJqGrid', 
_this.currentSessionMenu); 
     } 
     ,onSelectRow : _this.curSessionSelectedRow, 
     loadComplete : function(rowId) { 
      var craw = _this.X$("#currentTemplGrid") .getGridParam('xmlRawData'); 
      handleErrorMessage(craw); 
      _this.currentParseRowData(craw); 
      _this.currentfilterGrid(); 
      if(_this.curSessnSel != null){ 
       _this.X$('#currentTemplGrid').jqGrid('setSelection', 
_this.curSessnSel); 
      } 
     } 

    }); 
}; 
this.curSessionSelectedRow = function(){ 
    _this.portTempSel = _this.X$("#currentTemplGrid").jqGrid('getGridParam', 'selrow'); 
}; 
this.createPortTemplateGrid = function(){ 
    _this.X$("#portTemplGrid").jqGrid({ 
     mtype : 'POST', 
     url : DXOP_SERVER, 
     datatype : "xml", 
     postData : getPostData('<action> <object>porttemplate</object> <method>find</method> <language>enus</language> </action> <data> <row/> </data> '), 
     colModel : [ { 
      label : "Name", 
      name : 'name', 
      index : 'name', 
      xmlmap : "name" 
     }, { 
      label : "Type", 
      name : 'linetype', 
      index : 'linetype', 
      xmlmap : "linetype" 

     }, { 
      label : "Job Look up Timeout", 
      name : 'getworktimeout', 
      index : 'getworktimeout', 
      xmlmap : "getworktimeout" 

     }, { 
      name : 'pk', 
      index : 'pk', 
      xmlmap : "pk", 
      hidden : true 
     } ], 

     xmlReader : { 
      root : "data", 
      row : "row", 
      repeatitems : false, 
      id : "pk" 
     }, 

     rowNum : 10, 
     height : 400, 
     autowidth : true, 
     rowList : [ 10, 20, 30 ], 
     pager : '#pager2', 
     loadonce : true, 
     altRows : true, 
     sortname : 'name', 
     recordpos : 'left', 
     viewrecords : true, 
     sortorder : "desc", 
     multiselect : false, 
     afterInsertRow : function(rowid, rowdata, rowelem) { 
      $('#' + rowid).contextMenu('port_porttemplMenuJqGrid', 
_this.portTemplateMenu); 
     }, 
     onSelectRow : _this.portTemplSelectedRow, 
     ondblClickRow : _this.editPortTemplate, 
     loadComplete : function(rowId) { 
      var traw = _this.X$("#portTemplGrid").getGridParam('xmlRawData'); 
      handleErrorMessage(traw);      
      _this.templateParseRowData(traw); 
      _this.createCurrentSessionGrid(); 
      //_this.X$("#portTemplGrid").trigger("reloadGrid"); 
      //_this.X$("#portTemplGrid").setGridParam({datatype:'xml'}).trigger('reloadGrid'); 

      _this.X$('#portTemplGrid').setGridParam({datatype:'local'}); 
      _this.portfilterGrid(); 
      if(_this.portTempSel != null){ 
       _this.X$('#portTemplGrid').jqGrid('setSelection', 
_this.portTempSel); 
      } 
     } 
    }); 
}; 

感謝,

德萬·奈爾

+0

您應該發佈您使用的JavaScript代碼。如果使用'loadonce:true',則在從服務器加載第一個數據後,jqGrid會自動將數據類型更改爲「local」。重要的是,您發佈了用於所有網格的XML數據。一頁上有許多網格的典型問題 - id重複。 – Oleg 2011-05-16 12:23:40

+0

如果您發佈的文章包含代碼,您應該選擇它並點擊「{}」按鈕,在每行的開頭添加4個空格。此外,您應該包含網格的測試XML數據。沒有數據就無法測試排序。 – Oleg 2011-05-16 13:20:19

回答

0

您使用的電網 「#serverGrid」 和 「#currentTemplGrid」 同一尋呼機 '#pager3',這是不允許的。您不能在網格之間共享一個分頁器div。

此外,如果某些網格列不應被解釋爲文本,您應該定義描述數據類型的sorttype

如果您使用afterInsertRow網格將工作緩慢。如果你需要做的loadComplete內部數據綁定的所有行:

loadComplete: function() { 
    // your old code here and then 
    $('tr.jqgrow',this).contextMenu('port_portMenuJqGrid',_this.serverPortMenu); 
} 

afterInsertRow取出後應gridview:true參數添加到網格。它將多次提高電網性能。