简体   繁体   中英

jqgrid Uncaught TypeError: Cannot read property 'stype' of undefined

Setup: jqGrid 4.4.1

I have a grid that has worked forever. Something has changed and the data will no longer display in the grid. The grid loads, but sticks with the "Loading..." notice.

There error message is:

Uncaught TypeError: Cannot read property 'stype' of undefined (jquery.jqGrid.src.js:1599)
$.fn.jqGrid.each.addLocalData         jquery.jqGrid.src.js:1599
$.fn.jqGrid.each.populate             jquery.jqGrid.src.js:1853
(anonymous function)                  jquery.jqGrid.src.js:2467
f.event.dispatch                                jquery.min.js:3
f.event.add.h.handle.i                          jquery.min.js:3
f.event.trigger                                 jquery.min.js:3
(anonymous function)                            jquery.min.js:3
e.extend.each                                   jquery.min.js:2
e.fn.e.each                                     jquery.min.js:2
f.fn.extend.trigger                             jquery.min.js:3
$gridManager.addColumnNameToGroupHead         gridManager.js:81
$gridManager.setGridOptions                   gridManager.js:28
$order.showOrders                                 orders.js:112
$.ajax.success                                    orders.js:145
f.Callbacks.o                                   jquery.min.js:2
f.Callbacks.p.fireWith                          jquery.min.js:2
w                                               jquery.min.js:4
f.support.ajax.f.ajaxTransport.send.d           jquery.min.js:4

As far as I can tell, the json strings are valid and correct, the data (and column names) match, and all the stype values are valid.

var searchResultGrid = jQuery("#orderStatus").jqGrid({
        datatype: "jsonstring",
        datastr: orderData,
        jsonReader: { root: 'rows', total: 'total', page: 'page', records: 'records', repeatitems: false, id: 'id' },
        colNames: colNames,
        colModel: colModel,
        rowNum: 5000,
        height: $(window).height() - 205,
        width: $(window).width()-29,
        pagination: true,
        pager: '#orderStatusPager',
        viewrecords: true,
        sortname: 'status',
        sortorder: 'desc',
        loadonce: true,
        sortable: true,
        ignoreCase: true,
        emptyDataText: "No orders found",
        grouping: true,
        groupingView: groupingView,
        onSelectRow: function (rowId, status) {
            {REMOVED FOR CLARITY}
        },
        loadComplete: function () {
            jQuery("#orderStatus").trigger("reloadGrid"); // Call to fix client-side sorting
            $gridManager.setGroupingDd("orderStatus", "orderStatusPager", groupCol, ["part_no", "Descript"], "status");
            if (orderId) {
                jQuery("#orderStatus").setSelection(orderId, true);
            }
        },
        resizeStop: function () { $gridManager.updateGrid("orderStatus", "orderStatusPager"); }
    });

I can provide the colNames and colModel if they are relevant to finding the problem.

What would cause this? Or, how do I go about finding the cause?

UPDATE:

Here is the definition for groupingView

groupingView = { groupField: [groupCol], groupColumnShow: [$gridManager.isColumnVisible(groupCol)], groupText: ['<b>{0} - {1} Order(s)</b>'], groupCollapse: false, groupOrder: ['desc'] };

I can see that groupCol has a value of clear , which isn't a column in the json string.

I had a similar problem and found an issue with grouping. You didn't provide details on the definition for 'groupingView' but check there first.

You shouldn't try to group off of columns that aren't in the data. Either remove it, or remove the grouping if the column name doesn't exist.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM