Jquery 在本地使用jQgrid对数据进行排序

Jquery 在本地使用jQgrid对数据进行排序,jquery,sorting,jqgrid,Jquery,Sorting,Jqgrid,我使用jQgrid从服务器加载一次数据,使用xml格式的webservice,然后使用jQgrid的排序功能。 起初数据加载正确,但当我使用排序时,每行中的数据都被置乱,这意味着每行中的数据都不正确。 排序已经完成,但是对于每一列,来自另一行的数据被放置在每一行中。 这是我的密码: $.ajax({ type: "POST", url: "WebService.svc/getInfoXML", dataType: "json",

我使用jQgrid从服务器加载一次数据,使用xml格式的webservice,然后使用jQgrid的排序功能。 起初数据加载正确,但当我使用排序时,每行中的数据都被置乱,这意味着每行中的数据都不正确。 排序已经完成,但是对于每一列,来自另一行的数据被放置在每一行中。 这是我的密码:

 $.ajax({
        type: "POST",
        url: "WebService.svc/getInfoXML",
        dataType: "json",
        data: vdata,
        contentType: "application/json; charset=utf-8",
        success: function (json) {
            var data = json.d;
            jQuery("#tblDevs").jqGrid({
                datatype: 'xmlstring',


                datastr: data,

                colNames: [x1, x2, x3,x4],
                colModel: [
                                { name: 'devSerial', index: 'devSerial', hidden: true, width: 20, sortable: false },
                                { name: 'devName', index: 'devName', width: 100, sorttype: "string" },
                                { name: 'groupName', index: 'devSerial', hidden: true, width: 20, sortable: false },
                                { name: 'speed', index: 'speed', width: 70, sorttype: "number" },
                                { name: 'Date', index: 'Date', width: 115, sorttype: "string" },
                         ],
                viewrecords: true,
                direction: gridDirection,
                multiselect: false,
                rowNum: -1,
                rowTotal: 100000,
                width: 740,
                loadonce: true,
                sortable: true,
                gridComplete: function (rowId, rowData, rowElem) {


                    var grid = $("#tblDevs");
                    var rowData = grid.jqGrid('getDataIDs');
                    try {
                        for (var i = 0; i < rowData.length; i++) {
                            var emsStatus = jQuery("#tblDevs").getCell(rowData[i], "statusCode");
                            changeDevTableColor(emsStatus, rowData[i]);

                        }
                    }
                    catch (err) {

                    }
                },
                scrollrows: true,
                onSelectRow: function (id) {
                    var serial = jQuery("#tblDevs").getCell(id, "devSerial");
                    locate(serial);
                }


            });

function changeDevTableColor(emsStatus, rowId) {
    if (emsStatus == 6) {
        $("#tblDevs").jqGrid('setRowData', rowId, false, 'missionStyle6');
    }
    else if (emsStatus == 7) {
        $("#tblDevs").jqGrid('setRowData', rowId, false, 'missionStyle7');
    }
    else if (emsStatus == 8) {
        $("#tblDevs").jqGrid('setRowData', rowId, false, 'missionStyle8');
    }
    else if (emsStatus == 9) {
        $("#tblDevs").jqGrid('setRowData', rowId, false, 'missionStyle9');
    }
    else if (emsStatus == 10) {
        $("#tblDevs").jqGrid('setRowData', rowId, false, 'missionStyle10');
    }
    else if (emsStatus == 11) {
        $("#tblDevs").jqGrid('setRowData', rowId, false, 'missionStyle11');
    }
    else if (emsStatus == 12) {
        $("#tblDevs").jqGrid('setRowData', rowId, false, 'missionStyle12');
    }
    else if (emsStatus == 13) {
        $("#tblDevs").jqGrid('setRowData', rowId, false, 'missionStyle13');
    }
    else {
        $("#tblDevs").jqGrid('setRowData', rowId, false, 'missionStyle14');
    }
}
$.ajax({
类型:“POST”,
url:“WebService.svc/getInfoXML”,
数据类型:“json”,
数据:vdata,
contentType:“应用程序/json;字符集=utf-8”,
成功:函数(json){
var data=json.d;
jQuery(“#tblDevs”).jqGrid({
数据类型:“xmlstring”,
datastr:data,
colNames:[x1,x2,x3,x4],
colModel:[
{name:'devSerial',index:'devSerial',hidden:true,width:20,sortable:false},
{name:'devName',index:'devName',宽度:100,sorttype:'string},
{name:'groupName',index:'devSerial',hidden:true,width:20,sortable:false},
{name:'speed',index:'speed',width:70,sorttype:'number},
{name:'Date',index:'Date',宽度:115,sorttype:'string},
],
viewrecords:是的,
方向:网格方向,
多选:错,
rowNum:-1,
总数:10万,
宽度:740,
有一次:是的,
可排序:是的,
gridComplete:函数(rowId、rowData、rowElem){
风险值网格=$(“#tblDevs”);
var rowData=grid.jqGrid('getdataid');
试一试{
对于(var i=0;i
样本输出

<?xml version='1.0' encoding='utf-8'?>
<invoices>
    <rows>

        <row>
            <cell>63101</cell>
            <cell>3713</cell>
            <cell>-----</cell>
            <cell>1.26</cell>
            <cell>1394/12/12 21:44:57</cell>
            <cell>جنوب شرقی</cell>
            <cell>38</cell>
            <cell>309070</cell>
            <cell>140542</cell>
            <cell>حرکت از محل حادثه</cell>
        </row>
        <row>
            <cell>63100</cell>
            <cell>3723</cell>
            <cell>-----</cell>
            <cell>0.17</cell>
            <cell>1395/01/31 13:21:55</cell>
            <cell>جنوب شرقی</cell>
            <cell>22</cell>
            <cell>76343</cell>
            <cell>143153</cell>
            <cell>حالت نامشخص</cell>
        </row>
        <row>
            <cell>60814</cell>
            <cell>3724</cell>
            <cell>-----</cell>
            <cell>68.39</cell>
            <cell>1394/12/07 16:37:00</cell>
            <cell>شمال شرقی</cell>
            <cell>99</cell>
            <cell>221504</cell>
            <cell>139486</cell>
            <cell>رسیدن به بیمارستان</cell>
        </row>
        <row>
            <cell>63102</cell>
            <cell>3733</cell>
            <cell>-----</cell>
            <cell>7</cell>
            <cell>1395/02/04 15:15:47</cell>
            <cell>شمال</cell>
            <cell>98</cell>
            <cell>246200</cell>
            <cell>0</cell>
            <cell>حالت نامشخص</cell>
        </row>
        <row>
            <cell>60975</cell>
            <cell>60975</cell>
            <cell>-----</cell>
            <cell>0.2</cell>
            <cell>1394/03/19 12:59:03</cell>
            <cell>شرق</cell>
            <cell>99</cell>
            <cell>14440</cell>
            <cell>0</cell>
            <cell>حالت نامشخص</cell>
        </row>
        <row>
            <cell>63336</cell>
            <cell>63336</cell>
            <cell>-----</cell>
            <cell>0.02</cell>
            <cell>1394/03/19 10:39:59</cell>
            <cell>شمال غربی</cell>
            <cell>0</cell>
            <cell>0</cell>
            <cell>0</cell>
            <cell>حالت نامشخص</cell>
        </row>

    </rows>
</invoices> 

63101
3713
-----
1.26
1394/12/12 21:44:57
جنوب شرقی
38
309070
140542
حرکت از محل حادثه
63100
3723
-----
0.17
1395/01/31 13:21:55
جنوب شرقی
22
76343
143153
حالت نامشخص
60814
3724
-----
68.39
1394/12/07 16:37:00
شمال شرقی
99
221504
139486
رسیدن به بیمارستان
63102
3733
-----
7.
1395/02/04 15:15:47
شمال
98
246200
0
حالت نامشخص
60975
60975
-----
0.2
1394/03/19 12:59:03
شرق
99
14440
0
حالت نامشخص
63336
63336
-----
0.02
1394/03/19 10:39:59
شمال غربی
0
0
0
حالت نامشخص

提前感谢

我无法重现您描述的问题,无论是jqGrid 4.4.1(请参阅)还是GitHub最新的免费jqGrid(请参阅)。顺便说一下,我替换了代码,您用来设置类的代码取决于
状态代码
列(网格中不存在的列)的值使用
rowattr
callabck

rowattr: function (item) {
    var className;
    if (6 <= item.statusCode && item.statusCode <= 13) {
        className = "missionStyle" + item.statusCode;
    } else {
        className = "missionStyle14";
    }
    return { "class": className };
}
rowattr:函数(项){
var类名;

如果(6我无法重现您在jqGrid 4.4.1(请参阅)和GitHub最新免费jqGrid(请参阅)中描述的问题。顺便说一下,我用
rowattr
callabck替换了代码,您用来设置类的代码取决于
statusCode
列(网格中不存在列)的值

rowattr: function (item) {
    var className;
    if (6 <= item.statusCode && item.statusCode <= 13) {
        className = "missionStyle" + item.statusCode;
    } else {
        className = "missionStyle14";
    }
    return { "class": className };
}
rowattr:函数(项){
var类名;

如果(6)您能提供测试数据吗?为什么对两列
devSerial
groupName
都使用
index:'devSerial'
?通常应该删除所有
index
属性。您能包括