无法对多个jq网格进行排序

时间:2011-05-16 11:57:57

标签: sorting jqgrid

我使用

在我的html页面中有3个网格
  

loadonce:true;   数据类型:xml;

加载数据后我改变了

  

数据类型:local;

我这样做,以便当我进行排序或分页时,我不想要重新加载。 当我的页面中只有一个网格但是当我的页面上有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); 
            }
        }
    });
};

感谢,

德万

1 个答案:

答案 0 :(得分: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参数添加到网格中。它将多次改善电网性能。