Jqgrid自定义表单和自定义函数
我有以下问题。我正在为Jqgrid使用一个自定义表单,问题是我不知道如何在add/edit/delete中为submit按钮使用不同的函数。你能帮助我吗?我可以成功地使用delfunc。如何将delfunc添加到按钮submit from del form,以及函数addfunc to submit button from addJqgrid自定义表单和自定义函数,jqgrid,Jqgrid,我有以下问题。我正在为Jqgrid使用一个自定义表单,问题是我不知道如何在add/edit/delete中为submit按钮使用不同的函数。你能帮助我吗?我可以成功地使用delfunc。如何将delfunc添加到按钮submit from del form,以及函数addfunc to submit button from add $('#jqGrid').navGrid("#jqGridPager", { edit: true, add: true, del: tru
$('#jqGrid').navGrid("#jqGridPager", {
edit: true,
add: true,
del: true,
refresh: true,
view: false,
addfunc : function(){
var angajat = new Object();
angajat.id = null;
angajat.firstName = "andrei" //jQuery("#jqGrid").jqGrid('getRowData');
angajat.lastName = " chivu " //jQuery("#jqGrid").jqGrid('getRowData');
console.log(angajat);
$.ajax({
type: "POST",
url: "rest/user/add",
data: JSON.stringify(angajat),
contentType: "application/json; charset=utf-8",
dataType: "json",
contentType: "application/json",
success: function (data) {
$("#response").html(JSON.stringify(data));
}
});
},
delfunc : function (id){
$.ajax({
type:"DELETE",
url:"rest/user/delete",
data:JSON.stringify(id),
dataType: "json",
contentType: "application/json",
}).done(function( msg ) {
alert("Content Deleted: " + id);},
jQuery("#jqGrid").trigger("reloadGrid"));
},
editCaption: "Update Employee",
template: template,
//onClick: alert("alaaaaa"),
errorTextFormat: function (data) {
return 'Error: ' + data.responseText
}
},
// options for the Add Dialog
{
addCaption: "Add new Employee",
template: template,
sData: alert("alaaaaa"),
errorTextFormat: function (data) {
return 'Error: ' + data.responseText
}
},
// options for the Delete Dialog
{
caption: "Delete the Employee",
msg: "Are you sure ? ",
beforeSubmit: alert("alaaaaa"),
errorTextFormat: function (data) {
return 'Error: ' + data.responseText
},
});
})) 在大多数情况下,不需要使用
delfunc
、addfunc
、editfunc
或viewfunc
。该函数是对delGridRow
、editGridRow
和viewGridRow
的替换,但要替换代码不是很小的方法,必须详细理解代码
我试着解释一下我是如何理解你的问题的。我将从使用delfunc
开始。您尝试使用HTTP delete调用URLrest/user/delete
。因此,我假设您在后端有RESTful服务。要使用HTTP DELETE,您需要将已删除项目的id附加到URL,使用DELETE操作,并确保HTTP正文中没有其他信息(如oper
参数)。因此,您可以使用现有的delGridRow
选项
重要的是要了解,navGrid
只需在导航栏中添加一些按钮,如果用户单击相应的按钮,它就会调用方法delGridRow
、editGridRow
和viewGridRow
。navGrid
的选项如下所示
$("#gridid").jqGrid('navGrid','#gridpager', {parameters},
prmEdit, prmAdd, prmDel, prmSearch, prmView);
(见附件)。参数
部分是navGrid
的实物选项,它通知navGrid
例如导航栏上应该包括哪些按钮。其他选项包括delGridRow
、editGridRow
、searchGrid
和viewGridRow
方法,如果用户单击导航栏的相应按钮,则应使用这些方法。要配置删除按钮的行为,我们需要指定prmDel
参数。参数的值应该是具有属性和
delGridRow
方法的回调。看
同样,如果使用格式化程序:“操作”
或InlineAV
,则将添加另一个按钮,并且必须使用相应的选项来指定应使用delGridRow
的哪些选项。
我发现navGrid
的选项很难理解。正因为如此,我在免费jqGrid中引入了另一种方法,通过jqGrid选项的delGridRow
内部formDeleting
指定jqGrid中使用的默认选项。因此,最自由的jqGrid看起来像。它使用jqGrid的表单编辑
,表单查看
,搜索
选项,导航网格
的调用要么没有任何参数,要么只有一小部分选项。现在回到你的主要问题。有关更多信息,请参阅
如果主要逻辑是清楚的,那么就可以清楚地知道如何配置jqGrid来删除您所需要的内容。为此,您应该指定mtype:“DELETE”
选项和ajaxDelOptions:{…}
来指定Ajax调用的其他选项。要将id附加到URL,您可以使用onclickSubmit
或beforepubmit
回调(请参阅),但在免费jqGrid中,可以使用定义为函数的URL
(请参阅),并具有更可读的代码。因此,我建议您使用带有值的formDeleting
选项
{
mtype: "DELETE",
url: function (rowid) {
return "/rest/user/delete/" + rowid;
},
ajaxDelOptions: { contentType: "application/json" },
serializeDelData: function () {
return "";
},
reloadGridOptions: { fromServer: true },
}
{
url: function (id, editOrAdd) {
return "/rest/user/" + (editOrAdd === "add" ? "add" : "edit");
},
mtype: function (editOrAdd) {
return editOrAdd === "add" ? "POST" : "PUT";
},
serializeEditData: function (postData) {
return JSON.stringify(postData);
},
serializeEditData: function (postData) {
var dataToSend = $.extend({}, postData); // make copy of data
// don't send any id in case of creating new row or to send `0`:
if (dataToSend.id === "_empty") {
delete dataToSend.id; // or dataToSend.id = 0;
}
return JSON.stringify(dataToSend);
},
ajaxEditOptions: { contentType: "application/json" },
reloadGridOptions: { fromServer: true }
}
成功删除后将自动重新加载网格,因为reloadeaftersubmit:true
是delGridRow
的默认选项(请参阅)。最后一个选项reloadGridOptions
在使用jqGrid的loadonce:true
选项时很有用。它将强制从服务器重新加载网格
与配置添加和编辑按钮的方式相同,您可以使用jqGrid的formEditing
选项,该选项的值为
{
mtype: "DELETE",
url: function (rowid) {
return "/rest/user/delete/" + rowid;
},
ajaxDelOptions: { contentType: "application/json" },
serializeDelData: function () {
return "";
},
reloadGridOptions: { fromServer: true },
}
{
url: function (id, editOrAdd) {
return "/rest/user/" + (editOrAdd === "add" ? "add" : "edit");
},
mtype: function (editOrAdd) {
return editOrAdd === "add" ? "POST" : "PUT";
},
serializeEditData: function (postData) {
return JSON.stringify(postData);
},
serializeEditData: function (postData) {
var dataToSend = $.extend({}, postData); // make copy of data
// don't send any id in case of creating new row or to send `0`:
if (dataToSend.id === "_empty") {
delete dataToSend.id; // or dataToSend.id = 0;
}
return JSON.stringify(dataToSend);
},
ajaxEditOptions: { contentType: "application/json" },
reloadGridOptions: { fromServer: true }
}
对不起,你的问题越短,你对回答你问题的人的期望就越高。其他人还有很多事情要做。您可以将链接发布到demo,发布代码或代码片段等等,而不是编写“自定义表单”。我们完全不清楚jqGrid的哪个分支(,或者版本中的旧jqGrid,现在可以了?:)我现在看到您使用了
addfunc
和delfunc
。我的其他问题呢。您使用的jqGrid的哪个版本和分支?您可以使用“#响应”
。元素是什么?我还是跟不上你。您在标准表单编辑中遇到一些问题,并选择了使用addfunc
和delfunc
的复杂方式。因此,你试图解决一些问题。哪一个?我认为您的自定义代码没有任何优势。例如,delfunc
只发出Ajax请求,您可以使用标准jqGrid选项来执行相同的操作。而且我不明白你的主要问题。你有什么问题?你希望得到什么样的帮助?我使用了delfunc和addfunc,因为我不知道如何调用java后端应用程序。我不知道“反应”是什么,我找到了这个例子并尝试使用它。我只想在我的服务器上进行删除和添加,delfunc和adfunc是唯一让我这样做的方法。同样对于jqgrid,我只有这个链接“”。你能告诉我如何为添加编辑和删除附加一个提交触发器按钮吗?好的,我可以在这里发布我的答案,解释如何从navGrid
调用RESTful服务,但我可以在示例中解释,而不是Guriddo jqGrid JS。我开发了免费jqGrid,不知道Guriddo最后的变化,我在免费jqGrid中实现了一些功能,简化了REST的使用。因此,如果您确认免费jqGrid对您有帮助,那么我将发布我的答案。