如何在网格中间的jqgrid中添加新行

how to add new row in jqgrid in middle of grid

jqGrid 4.3允许使用内联编辑添加新行。

http://trirand.com/blog/jqgrid/jqgrid.html中的内联导航器演示
显示在添加命令网格滚动到顶部并且添加的行显示在网格顶部之后。
这很混乱。

如何强制添加的行出现在当前行的前面?

我将此功能请求发布在http://www.trirand.com/blog/?page_id=393/feature-request/force-added-row-in-inline-edit-to-appear-before-current-row/


在答案中,我建议扩展addRowData方法以支持position参数的新" afterSelected"和" beforeSelected"值(除了现有的" first"," last"," before"和" after")。 我展示了一个可以覆盖(子类)原始的addRowData方法以添加支持而无需编写addRowData的完整代码的方法。

在相应的演示中,我演示了在使用表单编辑的情况下如何使用该功能。

同样,我们也可以用inlineNav方法解决问题。 新的演示演示了这一点。

相应的代码实际上是答案中代码的副本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var oldAddRowData = $.fn.jqGrid.addRowData;

$.jgrid.extend({
    addRowData: function (rowid, rdata, pos, src) {
        if (pos === 'afterSelected' || pos === 'beforeSelected') {
            if (typeof src === 'undefined' && this[0].p.selrow !== null) {
                src = this[0].p.selrow;
                pos = (pos ==="afterSelected") ? 'after' : 'before';
            } else {
                pos = (pos ==="afterSelected") ? 'last' : 'first';
            }
        }
        return oldAddRowData.call(this, rowid, rdata, pos, src);
    }
});

...
$("#list").jqGrid('inlineNav', '#pager', {addParams: {position:"afterSelected"}});

可能我应该向trirand发布相应的建议,以使用上述功能修改原始的addRowData方法。