Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jqGrid问题分组-每次更改排序时都会追加重复行_Javascript_Jquery_Jqgrid - Fatal编程技术网

Javascript jqGrid问题分组-每次更改排序时都会追加重复行

Javascript jqGrid问题分组-每次更改排序时都会追加重复行,javascript,jquery,jqgrid,Javascript,Jquery,Jqgrid,我正在使用jqGrid,并已将分组添加到我的一个网格中。未启用分组时,一切正常,但我添加了以下内容: grouping: true, groupingView: { groupField: ['ProjName'], groupDataSorted: true } 我开始有一些奇怪的行为。当我单击其中一个列标题以更改排序顺序时,不会清除网格中的现有行,而是将新行追加到网格的末尾,并复制所有组 换句话说,当页面第一次绘制时,我看到: 然后,我点击一个排序标题,得到如下结果: 我的初始化代码如

我正在使用jqGrid,并已将分组添加到我的一个网格中。未启用分组时,一切正常,但我添加了以下内容:

grouping: true,
groupingView: { groupField: ['ProjName'], groupDataSorted: true }
我开始有一些奇怪的行为。当我单击其中一个列标题以更改排序顺序时,不会清除网格中的现有行,而是将新行追加到网格的末尾,并复制所有组

换句话说,当页面第一次绘制时,我看到:

然后,我点击一个排序标题,得到如下结果:

我的初始化代码如下:

var gridMyTasks = $('#gridMyTasks').jqGrid({
    jsonReader: { root: 'rows', repeatitems: false, id: 'ID' },
    datatype: 'json',
    colNames: ['Task ID', 'Task Name', 'Project Name', 'Task Stage', 'Doc Type', 'Due Date'],
    colModel: [
        { name: 'ShortCode', width: 70, jsonmap: 'ShortCode' },
        { name: 'TaskName', width: 200, jsonmap: 'TaskName', formatter: 'fmtTaskName' },
        { name: 'ProjName', width: 200, jsonmap: 'ProjName', formatter: 'fmtName' },
        { name: 'TaskStage', width: 100, jsonmap: 'TaskStage' },
        { name: 'DocType', width: 130, jsonmap: 'DocType' },
        { name: 'DueDate', width: 70, jsonmap: 'DueDate' }
    ],
    rowNum: 0,
    height: 'auto',
    autowidth: true,
    forceFit: true,
    multiselect: false,
    caption: '',
    altclass: 'zebra',
    altRows: true,
    hoverrows: false,
    gridview: true,
    grouping: true,
    groupingView: { groupField: ['ProjName'], groupDataSorted: true }
});
我的加载程序代码(在排序时再次调用)如下所示:

loader(limit, curSort, curDir, function (results) {
    grid[0].addJSONData({ rows: results });
    $('body').hideLoading();
    link.html(expanded ? 'Show less...' : 'Show all...');
},
null);

loader
是对服务器的AJAX调用)-我想也许我需要做些什么来清除所有现有的行?然而,为什么在我启用分组之前它工作得很好呢?

我想出来了。我有以下代码:

grid.setGridParam({
    onSortCol: function (index, iCol, sortorder) {
        wait();
        curSort = index;
        curDir = (sortorder == 'desc');
        loadGrid(expanded ? null : 15);
        return 'stop'; // <--- Problem
    }
});
grid.setGridParam({
onSortCol:函数(索引、iCol、排序器){
等待();
curSort=索引;
curDir=(sortorder='desc');
loadGrid(扩展?空:15);

return'stop';//你确定你的服务器每次都返回正确的数据吗?@tpeczek-是的,第一次加载时,服务器返回6行。当我排序时,服务器再次返回6行。但是,这6行被追加到网格的末尾。唯一改变的是在网格上启用分组。