Jquery 如何在轮询ajax时填充子网格,然后在jqgrid中应用现有网格?

Jquery 如何在轮询ajax时填充子网格,然后在jqgrid中应用现有网格?,jquery,jqgrid,Jquery,Jqgrid,我使用了列表json,并且在我希望每隔6秒从db附加数据并使用相同的列表json格式后得到了正确的答案。在没有子网格系统的情况下,它也可以正常工作,但在我得到正确的父轮询数据后,我正在集成这两个数据,但我没有得到子网格数据(为子网格精细获取数据后端) 在Oleg评论后第二次更新代码我已附上代码请查找 var $grid = $("#list11"), mainGridPrefix = "s_"; jQuery("#list11").jqGrid({ url: 'serv

我使用了列表json,并且在我希望每隔6秒从db附加数据并使用相同的列表json格式后得到了正确的答案。在没有子网格系统的情况下,它也可以正常工作,但在我得到正确的父轮询数据后,我正在集成这两个数据,但我没有得到子网格数据(为子网格精细获取数据后端)

在Oleg评论后第二次更新代码我已附上代码请查找

    var $grid = $("#list11"),
    mainGridPrefix = "s_";

jQuery("#list11").jqGrid({
    url: 'server.php?getList',
    datatype: "json",
    data: firstListJson,
    height: 200,
    colNames: ['Inv No', 'Date', 'Client'],
    colModel: [{
        name: 'id',
        index: 'id',
        width: 55
    }, {
        name: 'invdate',
        index: 'invdate',
        width: 90
    }, {
        name: 'name',
        index: 'name',
        width: 100
    }],
    rowNum: 10,
    gridview: true,
    rowList: [10, 20, 30],
    pager: '#pager11',
    loadonce: false,
    sortname: 'id',
    viewrecords: true,
    idPrefix: mainGridPrefix,
    sortorder: "desc",
    multiselect: false,
    caption: "Subgrid With polling",
    jsonReader: {
        repeatitems: false,
        id: 'id'
    },
    beforeProcessing: function(data) {

        var rows = data,
            l = data.length,
            i, item, subgrids = {};

        for (i = 0; i < l; i++) {
            item = rows[i];
            if (item.subGridData) {
                subgrids[item.id] = item.subGridData;
            }
        }
        //alert(subgrids);
        data.userdata = subgrids;
    },
    subGrid: true,
    subGridRowExpanded: function(subgridDivId, rowId) {


        var subGridID = $("#" + subgridDivId + "_t");
        var $subgrid = $("<table id='" + subgridDivId + "_t'></table>"),
            pureRowId = $.jgrid.stripPref(mainGridPrefix, rowId),
            subgrids = $(this).jqGrid("getGridParam", "userData");

        $subgrid.appendTo("#" + $.jgrid.jqID(subgridDivId));
        $subgrid.jqGrid({
            datatype: "local",
            data: subgrids[pureRowId],
            colNames: ['Emp ID', 'Name', 'Age'],
            colModel: [{
                name: 'id',
                index: 'id',
                width: 55
            }, {
                name: 'name',
                index: 'name',
                width: 90
            }, {
                name: 'age',
                index: 'age',
                width: 100
            }],
            rowNum: 10,
            rowList: [10, 20, 30],
            sortname: 'id',
            viewrecords: true,
            sortorder: "desc",
            multiselect: false

        });
    }
});
jQuery("#list11").jqGrid('navGrid', '#pager11', {
    add: false,
    edit: false,
    del: false
});





Below code
for json list of list



var firstListJson = [{
    "id": "01",
    "invdate": "2014-07-24",
    "name": "John",
    "subGridData": [{
        "id": "01",
        "name": "Krishna",
        "age": "28"
    }, {
        "id": "01",
        "name": "Jai",
        "age": "28"
    }, {
        "id": "01",
        "name": "Suresh",
        "age": "28"
    }]
}, {
    "id": "02",
    "invdate": "2014-07-24",
    "name": "Hill",
    "subGridData": [{
        "id": "01",
        "name": "Mani",
        "age": "28"
    }, {
        "id": "01",
        "name": "Raj",
        "age": "28"
    }, {
        "id": "01",
        "name": "Main",
        "age": "28"
    }]
}];

Below code
for polling code

function pollData() {
    var pollingListUrl = 'server.php?getPollList';
    $.ajax({
        type: "POST",
        url: pollingListUrl,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: true,
        cache: false,
        success: function(data) {
            var $mygrid = $("#list11");
            $mygrid.jqGrid("addRowData", "id", data);
            $mygrid.trigger("reloadGrid", [{
                current: true
            }]);
        },
        error: function(x, e) {
            alert("error occur");
        }
    });
}
var$grid=$(“#列表11”),
mainGridPrefix=“s”;
jQuery(“#list11”).jqGrid({
url:'server.php?getList',
数据类型:“json”,
数据:firstListJson,
身高:200,
colNames:['Inv No','Date','Client'],
colModel:[{
名称:“id”,
索引:“id”,
宽度:55
}, {
名称:“invdate”,
索引:“invdate”,
宽度:90
}, {
姓名:'姓名',
索引:“名称”,
宽度:100
}],
rowNum:10,
gridview:没错,
行列表:[10,20,30],
传呼机:'#第11页',
loadonce:false,
sortname:'id',
viewrecords:是的,
idPrefix:mainGridPrefix,
巫师:“描述”,
多选:错,
标题:“带轮询的子网格”,
jsonReader:{
重复项:false,
id:'id'
},
预处理前:函数(数据){
变量行=数据,
l=数据长度,
i、 项,子网格={};
对于(i=0;i
我发现您的代码中有3个错误:

  • 您可以使用
    数据类型:“xml”
    ,但处理前
    的代码面向代码,其中
    数据
    是对象,而不是xml文档

    顺便说一下,我严格建议您在网格和子网格中添加
    gridview:true
    ,以提高性能

  • 您可以使用
    $mygrid.jqGrid(“addRowData”,“ID”,data);
    但是网格中不包含列
    “ID”
    。您应该使用
    “ID”

  • subGridData
    部分数据中使用了不必要的
    。即使是您发布的代码中的颜色(我的意思是美化突出显示),也会显示相同的效果

  • 而不是

    var firstListJson=[
    {“id”:“01”,“invdate”:“2014-07-24”,“name”:“John”,
    “子网格数据”:[{
    “id”:“01”,“姓名”:“奎师那”,“年龄”:“28”},
    {“id”:“01”,“name”:“Jai”,“age”:“28”},
    {“id”:“01”,“姓名”:“Suresh”,“年龄”:“28”}
    ]"},
    {“id”:“02”,“invdate”:“2014-07-24”,“name”:“Hill”,
    “子网格数据”:[{
    “id”:“01”,“姓名”:“马尼”,“年龄”:“28”},
    {“id”:“01”,“name”:“Raj”,“age”:“28”},
    {“id”:“01”,“name”:“Main”,“age”:“28”}
    ]"}
    ];
    
    应该使用

    var firstListJson=[
        {"id":"01","invdate":"2014-07-24","name":"John",
            "subGridData": [{
                   "id":"01","name":"Krishna","age":"28"},
                   {"id":"01","name":"Jai","age":"28"},
                   {"id":"01","name":"Suresh","age":"28"}
                ]},
        {"id":"02","invdate":"2014-07-24","name":"Hill",
            "subGridData": [{
                    "id":"01","name":"Mani","age":"28"},
                   {"id":"01","name":"Raj","age":"28"},
                   {"id":"01","name":"Main","age":"28"}
                ]}
    ];
    

    在这种情况下,
    subGridData
    的值将是object(项目数组),而不是string。

    Oleg请查看上面更新的代码。从db获取第一个列表工作正常,然后填充父网格和子网格。轮询操作后,子网格不工作。使用的代码如下var$mygrid=$(“#list11”);$mygrid.jqGrid(“addRowData”ID“,data);$mygrid.trigger(“reloadGrid”,[{current:true}]);–@krishnakumarsubbayian:我不清楚从
    server.php?getPollList返回的数据是哪种格式