Я использую параметры редактирования inlineNav для добавления и редактирования строк. Данные корректно обновляются в базе данных, но я не могу найти способ обновить сетку после успешного сохранения без отправки на сервер.Как обновить jqgrid, используя данные ответа, возвращенные из редактирования
Все вопросы & Ответы, которые я нахожу, рекомендуют делать $. ('Grid'). Trigger ('reloadGrid');
Но это кажется ненужным, если ответ с сервера уже содержит требуемые данные. Это прежде всего проблема при добавлении новой записи, а значение ID отображается как jqg1.
Я использую ASP.NET MVC4, с jqGrid 4.4.4.
Вот мой взгляд
$(document).ready(function() {
var emptyMsgDiv = $('<div>No school codes to display.</div>');
var grid = $('#tblSchools');
grid.jqGrid({
datatype: 'json',
viewrecords: true,
url: '@Url.Action("SchoolsGridData")',
editurl: '@Url.Action("EditSchoolsGridData")',
colNames: ['School ID', 'Name', 'SACE Number', 'School Code', 'LEA Code', 'DFEE Code', 'Active'],
colModel: [
{ name: 'SchoolId', index: 'SchoolId', width: 80, key: true },
{ name: 'Name', index: 'Name', width: 190, editable: true },
{ name: 'SaceSchoolNumber', index: 'SaceSchoolNumber', width: 105, editable: true, sortable: false },
{ name: 'Code', index: 'Code', width: 105, editable: true, sortable: false },
{ name: 'LeaCode', index: 'LeaCode', width: 80, editable: true, sortable: false },
{ name: 'DfeeCode', index: 'DfeeCode', width: 80, editable: true, sortable: false },
{ name: 'Active', index: 'Active', width: 80, editable: true, sortable: false }
],
shrinkToFit: true,
height: "100%",
caption: 'School list',
rowNum: 10,
rowList: [10, 15, 20],
emptyrecords: 'No school codes to display.',
pager: '#schoolsPager',
loadComplete: function() {
var count = grid.getGridParam();
var ts = grid[0];
if (ts.p.reccount === 0) {
grid.hide();
emptyMsgDiv.show();
} else {
grid.show();
emptyMsgDiv.hide();
}
}
}).trigger('reloadGrid', [{ page: 1 }]);
emptyMsgDiv.insertAfter(grid.parent());
grid.jqGrid('navGrid', "#schoolsPager", { edit: false, add: false, del: true });
grid.jqGrid('inlineNav', '#schoolsPager', {
addParams: {
position: "last",
addRowParams: {
"keys": true,
"aftersavefunc": function (rowid, response) {
alert('row: ' + rowid + ', response: ' + $.param(response));
}
}
},
editParams: {
"aftersavefunc": function (rowid, response) {
alert('row: '+rowid+', response: '+response);
}
}
});
});
</script>
<h3>Maintain Schools</h3>
<table id="tblSchools"></table>
<div id="schoolsPager" class="gridPager"></div>
и мой контроллер
public JsonResult EditSchoolsGridData(string oper, string SchoolId, string Name, string SaceSchoolNumber, string Code, string LeaCode, string DfeeCode, string Active)
{
[Update Logic]
return SchoolsGridData(string.Empty, "asc", 1, 10);
}
[HttpGet]
public JsonResult SchoolsGridData(string sidx, string sord, int? page, int? rows)
{
[Get data logic]
}
Я могу видеть JSON ответ отображается в aftersavefunc, но не может найти способ, чтобы привязать его к сетка.
Является ли то, что я пытаюсь сделать, даже возможно?
Спасибо за это. Я думаю, что addRowData больше нацелен на отдельные строки, но прямо над ним на wiki был addJSONData. Направил меня в правильном направлении. –
Добро пожаловать. addJSONData - добавить несколько строк, а addRowData добавит одну строку. Тогда есть еще один подобный метод setRowData, который заменит данные новым, используя идентификатор строки. – Kris