не может отсортировать несколько JQ сеток - PullRequest
0 голосов
/ 16 мая 2011

У меня есть 3 сетки на моей HTML-странице, которую я использую

loadonce: true;тип данных: 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); 
            }
        }
    });
};

спасибо,

Деван

1 Ответ

0 голосов
/ 16 мая 2011

Вы используете для сеток "#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 в сетку. Это улучшит производительность сетки во много раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...