jqgrid子网格没有加载数据(没有发送到服务器的Ajax调用)

时间:2014-05-19 00:38:42

标签: jqgrid

我在下面设置了jqgrid(v 4.6.0)。

$(function () {

var JQGridDefaults = {
    caption: '',
    rowList: [10, 50, 100],
    datatype: 'json',
    height: '100%',
    viewrecords: true,
    mtype: 'GET',
    colNames: ['Item Control No', 'Item Short Description', 'ID'],
    colModel: [
        {
            name: 'ItemCode', index: 'ItemCode', search: true, width: 230, cellattr: makeCellContentWrap, searchoptions: {
                sopt: ['eq', 'ne', 'bw', 'bn', 'ew', 'en', 'cn', 'nc'],
            },
            searchrules: {required: true}
        },
        {
            name: 'ItemShortDesc', index: 'ItemShortDesc', search: true, width: 300, cellattr: makeCellContentWrap, searchoptions: {
                sopt: ['eq', 'ne', 'bw', 'bn', 'ew', 'en', 'cn', 'nc'],
            },
            searchrules: {required: true }
        }
        //Hidden Fields - Start
        { name: 'ItemID', hidden: true, key: true }
        //HiddenFields End
    ],
    pager: '#GridPager',
    rowNum: 10,
    sortname: 'ItemCode',
    sortorder: 'asc',
    url: '/Items/List',
    jsonReader: {
            root: "rows",
            page: "page",
            total: "total",
            records: "records",
            repeatitems: false,
            userdata: "userdata",
            subgrid: {
                root: "rows",
                repeatitems: false
            }
        },
    //Sub Grid - Start
    subGrid: true,
    subGridBeforeExpand: function (pID, rowID) {
        console.log("Before Expand");
        var gridData = $(this).jqGrid('getRowData',rowID);
        if (gridData.ItemCode == "") {
            return false;
        }
    },
    subGridUrl: '/Items/Details',
    subGridModel: {
        name: ['Revision', 'ItemCode'],
        width: [50, 100],
        align: ['center', 'center'],
        mapping: ['Revision', 'ItemCode']
    },
    afterInsertRow: function (rowid, aData, rowelem) {
        // Remove the subgrid plus button except for rows that have exceptions
        if (aData.ItemCode  == "") {
            $('#' + rowid).children("td.sgcollapsed").unbind();
            $('#' + rowid).children("td.sgcollapsed").html("");
        }
    }
    //Sub Grid - END
};
var JQGridSearchDefaults = {
    multipleSearch: true,
    recreateFilter: true,
    showQuery: true,
    closeAfterSearch: true,
    closeAfterReset: true,
    searchOnEnter: true,
    closeOnEscape:true,
    width: 600
};

$('#Grid').jqGrid(JQGridDefaults).navGrid('#GridPager', { view: false, del: false, add: false, edit: false, refresh: true },
{},
{},
{},
JQGridSearchDefaults);

$('#Grid').jqGrid('setGridWidth', $('#Grid').parents('.main-content').width() - 2);

$(window).resize(function () {
    clearTimeout(this.id);
    this.id = setTimeout(function () {
        $('#Grid').jqGrid('setGridWidth', $('#Grid').parents('.main-content').width() - 2);
    }, 300);
});
});

子网格图标正确显示但是当我点击展开图标时,会出现一个空行(没有标题,也没有发送ajax调用)

有没有人知道为什么没有发生ajax调用?

注意:我还尝试使用'subgridtype'参数和define来进行也没有进行Ajax调用的服务调用。

subgridtype: function (rowidparam) {
            $.ajax({
                url: '/Items/Details',
                cache: false,
                type: 'Get',
                dataType: "json",
                data: { id: rowidparam.ItemID }
            }).done(function (data) {
                $('#Grid')[0].subGridJson(data, rowidparam.id);
            });
        },

1 个答案:

答案 0 :(得分:0)

subgridtype必须是string,因为你试试json subgridtype:'json'