У меня есть jqGrid на моей странице, которая получает свои записи, используя сообщение json на сервер. На этой же странице у меня также есть кнопка удаления. Нажатие кнопки удаления использует запись ajax на сервер, чтобы удалить выбранную запись. После удаления записи, если сервер возвращает код успеха, мне нужно обновить сетку.
Кажется, что работает нормально, за исключением случаев, когда в сетке есть только одна запись. Последняя запись, которую я удаляю, никогда не удаляется из таблицы. Даже если я нажму кнопку обновления в нижнем колонтитуле, она все равно не исчезнет. Когда имеется более одной записи, она обновляется так, как я ожидаю.
Я новичок в jqGrid, поэтому я уверен, что делаю что-то не так. Любая помощь будет оценена.
jqGrid определение
$('#gridOrgs').jqGrid({
url: 'some url goes here',
datatype: 'json',
mtype: 'POST',
loadonce:false,
colNames: ['ID', 'Name', 'City', 'Province', 'Admin'],
colModel: [
{ name: 'Id', index: 'Id', hidedlg: true, hidden: true, sortable: false },
{ name: 'CompanyName', index: 'CompanyName', width: 200, sorttype: 'text' },
{ name: 'City', index: 'City', width: 150, sorttype: 'text' },
{ name: 'Province', index: 'Province', width: 150, sorttype: 'text' },
{ name: 'IsAdmin', index: 'IsAdmin', width: 50, sorttype: 'text', formatter: 'checkbox', align: 'center'},
],
pager: '#pagerOrgs',
jsonReader: {
repeatitems: false,
id: 'Id' },
rowNum: 10,
rowList: [10, 25, 50, 75, 100],
sortname: 'CompanyName',
sortorder: 'desc',
viewrecords: true,
caption: 'Companies',
hidegrid: false,
width: 650,
height: 400,
onSelectRow: function (id) {
if (id)
RowSelected(id, $('#gridOrgs').getCell(id,'IsAdmin'));
else
NoRowSelected();
}
});
jQuery("#gridOrgs").jqGrid('navGrid','#pagerOrgs',{edit:false,add:false,del:false});
Удалить событие нажатия кнопки:
$('#btnDelete').click(function() {
var id = jQuery("#gridOrgs").jqGrid('getGridParam','selrow');
if (id)
$.post('@Url.Action("Json_Delete", "Organization")', {'id': id}, function(data){ProcessDeleteResponse(data.result);}, 'json');
else
$('#dialogNothingSelected').dialog('open');
});
function ProcessDeleteResponse(resultCode) {
if (resultCode == 'success')
$('#gridOrgs').trigger('reloadGrid');
}
Я тоже пробовал
.trigger ('reloadGrid', [{page: 1}]);
.trigger ('reloadGrid', [{current: true}]);
Независимо от того, что я делаю, последняя запись остается в сетке.
И последнее: когда я запускаю reloadGrid, сетка делает вызов серверу и получает обновленную информацию. Обновленная информация содержит 0 для общего количества записей.
Еще раз спасибо.