Javascript jqgrid:动态添加记录后排序不起作用

Javascript jqgrid:动态添加记录后排序不起作用,javascript,jquery,jqgrid,Javascript,Jquery,Jqgrid,我有一个jqgrid,它最初会填充一些记录。用户可以选择向网格中添加更多行。但是,在添加新行之后,如果用户尝试对记录进行排序,则结果不一致,并且一些记录在网格中丢失 小提琴手: HTML: 复制步骤: a。启动fiddler(您将看到一个包含2条记录的测试网格) B现在,单击“添加新”按钮,然后通过单击任何列标题尝试排序 问题: 代码有什么问题吗?为什么有些唱片正在消失 环境: jqgrid 4.6.0、jquery 1.11.1和IE 9您必须使用addRow来追加数据。这是最新的提琴 感谢您

我有一个jqgrid,它最初会填充一些记录。用户可以选择向网格中添加更多行。但是,在添加新行之后,如果用户尝试对记录进行排序,则结果不一致,并且一些记录在网格中丢失

小提琴手:

HTML:

复制步骤:

a。启动fiddler(您将看到一个包含2条记录的测试网格) B现在,单击“添加新”按钮,然后通过单击任何列标题尝试排序

问题:

代码有什么问题吗?为什么有些唱片正在消失

环境:
jqgrid 4.6.0、jquery 1.11.1和IE 9

您必须使用
addRow
来追加数据。这是最新的提琴


感谢您向我介绍“addRow”功能。我正在进一步研究这个函数如何适合我在项目中的实际代码。看起来addRowData删除了现有的行,但addRow追加了!根据文档,看起来addRow是addRowData方法之上的包装器。addRow方法调用addRowData。可以使用
addRowData
而不是
addRow
。重要的是,
addJSONData
的原始用法是错误的。问题的原因是:初始数据填写错误。您不应该使用
addJSONData
。相反,您可以使用jqGrid的
数据
参数:
<table id="sg1"></table>
<div id="psg1"></div>
</br>
<button id="new" type="button">Add New</button>
jQuery("#sg1").jqGrid({
    datatype: "local",
    gridview: true,
    loadonce: true,
    shrinkToFit: false,
    autoencode: true,
    height: 'auto',
    viewrecords: true,
    sortorder: "desc",
    scrollrows: true,
    loadui: 'disable',
    colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
    colModel:[
        {name:'Id',index:'Id', width:60, sorttype:"int"},
        {name:'invdate',index:'invdate', width:90, sorttype:"date"},
        {name:'name',index:'name', width:100},
        {name:'amount',index:'amount', width:80, align:"right",sorttype:"float"},
        {name:'tax',index:'tax', width:80, align:"right",sorttype:"float"},     
        {name:'total',index:'total', width:80,align:"right",sorttype:"float"},      
        {name:'note',index:'note', width:150, sortable:false}       
    ],
    caption: "Test Grid"
});

var initialData = [
        {Id:"1",invdate:"2007-10-01",name:"test 12349",note:"note",amount:"200.00",tax:"10.00",total:"210.00"},
        {Id:"2",invdate:"2007-10-02",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"}
        ];

var subData = [
        {Id:"3",invdate:"2007-10-01",name:"test 12349",note:"note",amount:"200.00",tax:"10.00",total:"210.00"},
        {Id:"4",invdate:"2007-10-02",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"}
        ];

jQuery("#sg1")[0].addJSONData(initialData);

var i=2;

$('#new').on('click', function(){
    i = i+i;
    jQuery("#sg1").jqGrid(
        'addRowData',
        $.jgrid.randId(),
        {Id:i,invdate:"2007-10-02",name:"test"+i,note:"note" + i,amount:"300.00",tax:"20.00",total:"320.00"});    
});
$('#new').on('click', function(){
       i = i+i;
   var parameters =
{
    initdata :  {Id:i,invdate:"2007-10-02",name:"test"+i,note:"note" + i,amount:"300.00",tax:"20.00",total:"320.00"},
    position :"last"
};
    jQuery("#sg1").jqGrid('addRow',parameters); 
});