我正在使用带有自定义编辑,删除按钮的Jqgrid。此外,我正在使用外部搜索来搜索网格。两天以来我一直在讨论一个问题。
请检查我的以下代码绑定jqgrid
jQuery(document).ready(function () {
var myGrid = $('#list');
myGrid.jqGrid({
url: '/Site/GetData/',
datatype: "json",
contentType: "application/json; charset-utf-8",
mtype: 'POST',
loadonce: true,
colNames: ['Site ID', 'Site Name', 'Email Address', 'Website', 'Contact Person', 'Phone number', 'Mobile number', "Edit", "Delete"],
colModel:
[
{ name: 'SiteID', hidden: true },
{ name: 'SiteName' },
{ name: 'EmailID' },
{ name: 'Website' },
{ name: 'ContactPerson' },
{ name: 'PhoneNo' },
{ name: 'MobileNo' },
{ name: 'Edit', width: 50, sortable: false, formatter: ColumnFormatter },
{ name: 'Delete', width: 60, sortable: false, formatter: ColumnFormatter },
],
autowidth: true,
rowNum: 5,
rowList: [5, 10, 20, 50],
pager: jQuery('#pager'),
sortorder: "desc",
viewrecords: true,
gridview: true,
ignoreCase: true,
}).navGrid('#pager',
{
rowNum: 5, edit: false, add: false, del: false, search: false, refresh: true
}
);
});
使用上面的代码我绑定了Jqgrid。 现在,我需要从网格中删除一行,删除后我需要刷新整个网格。但它没有根据页面保存数据。请检查下面的删除功能:
function deleteRow(imageElement, UserId) {
var data = new Object();
data.id = UserId;
var _data = JSON.stringify(data);
$("#list").setGridParam({ datatype: 'json' });
$.ajax({
url: '@Url.Action("Delete", "Site")',
type: "POST",
contentType: "application/json; charset=utf-8",
data: _data,
success: function (result) {
var currentPage = $('#gridData').getGridParam('page');
$('#list').trigger('reloadGrid');
$("#list").setGridParam({ page: currentPage })
},
error: function (result) {
alert("This data can not be deleted");
}
});
}
好的,使用上面的代码,我正在删除行,如果响应是Success,则需要重新加载整个网格。
现在,如果我在第二页并删除任何行,那么它将重新加载网格,它显示我的页码设置为2.但是记录显示我从网格的第一页开始。
请帮帮我
答案 0 :(得分:0)
我不确定我是否正确理解了您需要实施的行为。如果要从服务器重新加载整个网格,则应在重新加载之前重置datatype
的值。原因是:您使用loadonce: true
从服务器加载数据,将其保存在内部jqGrid参数data
和_index
中,然后保存在datatype
中}将更改为"local"
。因此,如果要从服务器重新加载数据,则应执行
$('#list').jqGrid('setGridParam', {datatype: 'json'});
reloadGrid
之前。
此外,如果您需要使用特定的页面重新加载网格,则可以使用jqGrid的page
参数(有关详细信息,请参阅the answer)。在大多数情况下,current:true
选项的使用是需要的。所以代码应该是下面的代码
...
success: function (result) {
$("#list").setGridParam({ datatype: 'json' })
.trigger('reloadGrid', [{ current: true }]);
}