如何在jqgrid中加载新添加的数据

时间:2011-04-11 10:30:29

标签: javascript jquery jqgrid

我知道这对某些人来说听起来很简单。我也试过这个one。但出于某种原因,我真的无法刷新并查看我在jqgrid中新添加,编辑和删除的内容。

我正在我的程序中创建一个按钮,可以添加,编辑和删除,之后,它将刷新我的jqgrid并显示我在其中所做的改变。例如,我添加了新数据。在第一次尝试中,它将显示新添加的数据,但在第二次,它将不再显示。我的编辑和删除数据也不会刷新。这是代码:

function Edit(){  
   var selected = $("#list1").jqGrid('getGridParam', 'selrow');  
   var dat = {
     "ID": 'xyz',
     ...
     "keyFields": [{"..."}] 
   };                
  update(dat); 
  $('#list1').trigger('reloadGrid');  
} 

function update(dat){
  $.ajax({
     type: 'GET',
     url: 'mydata.php?' + $.param({path:'this/update',json:JSON.stringify(dat)}),
     dataType: Settings.ajaxDataType,
     success: function(data) {
       if ('error' in data)
       {
         alert('ERROR']);
       }
    }
  });
}

服务器端正常,无论我在屏幕上做什么都会更新。当我第一次使用添加按钮时,没有任何问题。问题出现在我的编辑和删除按钮之后。希望有人能帮助我理解这一点。

1 个答案:

答案 0 :(得分:3)

你没有发布你使用的jqGrid的任何定义,所以我只能说你发布的代码有什么问题。

第一个问题是,您必须将$('#list1').trigger('reloadGrid');放在success $.ajax update函数loadonce:true句柄的内。只有在服务器上成功更新数据后,才应触发网格重新加载。

如果您使用datatype参数将jqGrid的datatype:'local'参数的原始值更改为loadonce:true,则可能遇到第二个问题。如果您使用datatype并需要从服务器重新加载数据,则必须将jqGrid的datatype参数重置为其初始值('xml'或'json'取决于您使用的内容)和然后才重新加载'reloadGrid'网格。要更改setGridParam,您可以使用jqGrid的{{1}}方法。