无法在jqGrid中显示组

时间:2014-11-24 05:37:31

标签: jquery jqgrid

我正在尝试按照指南行在组中显示网格,但它无法在jqGrid中加载数据。

有人可以帮帮我吗?

$("#Addresses").jqGrid({
    datatype: 'xmlstring',
    datastr: xmlString.XmlToString(),
    mtype: 'POST',
    beforeRequest: function () {
        //alert('beforeRequest');
    },
    loadError: function (xhr, status, error) {
        $(this).HideBusy();
        //   alert(status);
        //     alert(error);
        alert(xhr.responseText);
    },
    onSelectRow: function (id) {
        var Address = $("#Addresses").jqGrid('getCell', id, 'Address');
        SelectedAddresses.find("CRD1>row").each(function (index) {
            if ($(this).find('Address').text() == Address) {
                var v1 = $(this).XmlToString();
                var v2 = '<CRD1>' + v1 + '</CRD1>';
                $(this).SetValuesToControl("BusinessPartner #uxAddresses", $($.parseXML(v2)));
            }
        });
    },
    loadComplete: function (data) {
        var top_rowid = $('#Addresses tr:nth-child(2)').attr('id');
        $("#Addresses").setSelection(top_rowid, true);
        $(this).HideBusy();
    },
    ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
    xmlReader: { repeatitems: false, root: "CRD1", row: 'row' },
    colNames: ['Address', 'AdresType'],
    colModel: [
                        { name: 'Address', key: true, index: 'Address asc', hidden: false },
                        { name: 'AdresType', index: 'AdresType', sortable: false, align: "left" }
           ],
    viewrecords: true,
    gridview: true,
    autowidth: true,
    shrinkToFit: false,
    height: 150,
    width: 110,
    grouping: true,
    groupingView: {
        groupField: 'AdresType',
        groupColumnShow: false
    },
    scrollOffset: 0
}).jqGrid('navGrid', '', { edit: false, add: false, del: false, searchOnEnter: false, search: false }, {}, {}, {}, { multipleSearch: false });

我看到了这个link,我注意到在groupField中有两个方括号([])表示数组,我假设它用于多个组。

如果我在方括号中指定FieldName(例如:groupField:[&#39; AdresType&#39;]),它会抛出jqGrid错误。

错误: Microsoft JScript运行时错误:无法获取属性的值&#39; 0&#39;:对象为null或未定义

示例数据:

<CRD1>
<row>
    <Address>HeadOffice</Address>
    <CardCode>A0002</CardCode>
    <City nil="true"/>
    <County nil="true"/>
    <Building/>
    <AdresType>B</AdresType>
</row>
<row>
    <Address>SiteOffice</Address>
    <CardCode>A0002</CardCode>
    <City nil="true"/>
    <County nil="true"/>
    <Building/>
    <AdresType>B</AdresType>
</row>
    <row>
    <Address>PuneOffice</Address>
    <CardCode>A0002</CardCode>
    <City nil="true"/>
    <County nil="true"/>
    <Building/>
    <AdresType>S</AdresType>
</row>

1 个答案:

答案 0 :(得分:0)

您应该注意groupingView中使用的数据类型。 The documentation包含包含PropertyTypeDescriptionDefault列的表格。 TypegroupField的{​​{1}}列都包含groupColumnShow。所以正确的是

的用法
array

而不是

groupingView: {
    groupField: ['AdresType'],
    groupColumnShow: [false]
}

更新:还有一个问题:jqGrid中存在错误。 The lines

groupingView: {
    groupField: 'AdresType',
    groupColumnShow: false
}

应改为

if(!locdata) {
    self.jqGrid('groupingRender',grpdata,ts.p.colModel.length, ts.p.page, rn);
}
grpdata = null;

该错误已于2014年3月3日在jqGrid的主代码中修复(请参阅here),但当时没有发布新版本的jqGrid。我希望Tony能很快发布新版本。

因此,您可以在if(!locdata) { self.jqGrid('groupingRender',grpdata,ts.p.colModel.length, ts.p.page, rn); grpdata = null; } 的副本中进行相应的修改。或者,您可以使用除jquery.jqGrid.src.js之外的任何其他数据类型。