Логика в том, что мы снова перезагружаем сетку после того, как вызов возвращается в JqGrid .... попробуйте это работает
ичок в использовании jqgrid.
При загрузке новой страницы сетка корректно загружает данные из базы данных. Впоследствии из-за loadonce: true, сетка не перезагружает данные из базы данных для добавления / редактирования / удаления.
Моя комбинация приложений - JSP, Servlet, MySQL
У меня есть сетка со следующими настройками
jQuery("#userList").jqGrid({
url: '<%=request.getContextPath()%>/userJqGrid?q=1&action=fetchData&userCookie=<%= encodedCookie%>',
datatype: 'xml',
mtype: 'GET',
colNames:['<%= userProp.getProperty(userColNames[0])%>',
'<%= userProp.getProperty(userColNames[1])%>',
'<%= userProp.getProperty(userColNames[2])%>',
'<%= userProp.getProperty(userColNames[3])%>',
'<%= userProp.getProperty(userColNames[4])%>',
'<%= userProp.getProperty(userColNames[5])%>'
],
colModel:[
{name:'<%= userColNames[0]%>',index:'<%= userColNames[0]%>',
width:120,sortable:true,editable:true,editrules:{required:true},formoptions:{rowpos:1, elmprefix:'*'}},
{name:'<%= userColNames[1]%>',index:'<%= userColNames[1]%>',
width:130,sortable:true,editable:true},
{name:'<%= userColNames[2]%>',index:'<%= userColNames[2]%>',
width:100,sortable:true,editable:true,editrules:{required:true},formoptions:{rowpos:3, elmprefix:'*'}},
{name:'<%= userColNames[3]%>',index:'<%= userColNames[3]%>',
width:180,sortable:true,editable:true,editrules:{email:true,required:true},formoptions:{rowpos:4, elmprefix:'*'}},
{name:'<%= userColNames[4]%>',index:'<%= userColNames[4]%>',
width:100,sortable:true,editable:true},
{name:'<%= userColNames[5]%>',index:'<%= userColNames[5]%>',
width:100,sortable:true,editable:true},
],
pager: '#pager1',
rowNum:50,
height:'auto',
//rowList:[10,20,30],
loadonce: true,
sortname:'<%= userColNames[0]%>',
viewrecords: true,
editurl:'<%=request.getContextPath()%>/userJqGrid?q=1&action=addData&userCookie=<%= encodedCookie%>',
caption: 'User Grid',
ondblClickRow: function(rowid) {
$("#userList").jqGrid('editGridRow',rowid, userEditParam);
return;
}
});
$("#userList").jqGrid('navGrid',"#pager1",{add:true,edit:true,del:true});
$("#userList").jqGrid('gridResize', { minWidth: 450, minHeight: 150});
Я попытался добавить следующий код, чтобы перезагрузить
$("#userList").jqGrid('setGridParam',{datatype:xml}).trigger('reloadGrid')
Может кто-нибудь помочь?
Решение, которое сработало для меня
$("#userList").jqGrid('navGrid',"#pager1",{add:true,edit:true,del:true,refresh:true,
beforeRefresh: function() {
$("#userList").jqGrid('setGridParam',{datatype:xml}).trigger('reloadGrid');
}},
{
afterSubmit: processAddEdit,
closeAfterAdd:true,
closeAfterEdit:true
},{
aftersubmit:processAddEdit,
closeAfterAdd:true,
closeAfterEdit:true
});
function processAddEdit() {
$("#userList").jqGrid('setGridParam',{datatype:xml}).trigger('reloadGrid');
return[true,'']; //no error
}