我知道这对某些人来说听起来很简单。我也试过这个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']);
}
}
});
}
服务器端正常,无论我在屏幕上做什么都会更新。当我第一次使用添加按钮时,没有任何问题。问题出现在我的编辑和删除按钮之后。希望有人能帮助我理解这一点。
答案 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}}方法。