JQGrid,编辑网址
问题描述:
我是jQuery的新手,我需要在我的项目中使用jqGrid。JQGrid,编辑网址
我有一个编辑/删除/插入问题;我只有一个URL,editurl
,然后在控制器中我使用oper
属性来决定它是插入还是删除操作。
但我想为jqGrid中的编辑,删除和插入操作有一个单独的URL。你能让我知道如何实现吗?
客户端代码:
$(document).ready(function() {
var lastsel2;
var grid = jQuery("#list5").jqGrid({
url: '/home1/GetUserData',
datatype: "json",
mtype: "POST",
colNames: ['Code', 'LoginID', 'Emailid', 'CreateDate'],
colModel: [
// { name: 'act', index: 'act', width: 75, sortable: false },
{name: 'Code', index: 'Code', width: 55, editable: true },
{ name: 'LoginID', index: 'LoginID', width: 90, editable: true },
{ name: 'Emailid', index: 'Emailid', width: 100, editable: true },
{ name: 'CreateDate', index: 'CreateDate', width: 100, editable: true }
],
rowNum: 10,
width: 700,
height: 300,
rowList: 10,
pager: $("#pager2"),
editurl: "/home1/EditUserData",
onSelectRow: function (id) {
if (id && id !== lastsel2) {
if (id == "new_row") {
grid.setGridParam({ editurl: "/home1/InsertUserData" });
}
else {
grid.setGridParam({ editurl: "/home1/EditUserData" });
}
jQuery('#list5').restoreRow(lastsel2);
$("#list5_ilsave").addClass("ui-state-disabled");
$("#list5_ilcancel").addClass("ui-state-disabled");
$("#list5_iladd").removeClass("ui-state-disabled");
$("#list5_iledit").removeClass("ui-state-disabled");
lastsel2 = id;
}
},
caption: "Simple data manipulation"
});
jQuery("#list5").jqGrid('navGrid', '#pager2', { edit: false, add: false, del: true, search: false, refresh: false }, {}, {}, { url: '/home1/DeleteUserData' });
jQuery("#list5").jqGrid('inlineNav', "#pager2", { edit: true, add: true, del: true, search: false, refresh: false });
});
答
您可以通过选项对所有与navGrid方法的操作是这样的:
jQuery('#list5').jqGrid('navGrid', '#pager2', { edit: true, add: true, del: true },
//edit options
{ url: '/home1/EditUserData' },
//add options
{ url: '/home1/AddUserData' },
//delete options
{ url: '/home1/DeleteUserData' }
);
UPDATE
在inlineNav方法的jqGrid的情况下总是使相同的参数集(editParams)至saveRow方法。由于编辑/添加请求会对同一个URL产生影响。你坚持检查oper
区分编辑添加。
在重装你可以使用editParams设置aftersavefunc电网的受触发realoadGrid
这样的:
jQuery('#list5').jqGrid('inlineNav', '#pager2', { edit: true, add: true, editParams: {
aftersavefunc: function(rowId, response) { jQuery('#list5').trigger('reloadGrid'); }
}});
但是你应该记住,这也将导致刷新编辑后(因为同样的原因如上所述) - 您可以尝试使用响应参数来区分这两个参数。我也删除了del,搜索和刷新代码,因为inlineNav没有这些选项。
感谢您的回复,但它适用于FORM EDITING而不是INLINE EDITING,我想要进行内联编辑。 – Meraj 2012-04-12 09:27:30
@Meraj那么你的示例代码是使用navGrid(这是使用表单编辑设置)。您的问题中没有任何内容表明您正在使用内嵌编辑。请更新您的代码,以便我可以看到您如何使用内嵌编辑,以便我可以为您提供帮助。 – tpeczek 2012-04-12 09:53:52
绝对正确的答案和最后的评论+1。 – Oleg 2012-04-12 11:36:45