Jqgrid自定义表单和自定义函数

Jqgrid自定义表单和自定义函数,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使用一个自定义表单,问题是我不知道如何在add/edit/delete中为submit按钮使用不同的函数。你能帮助我吗?我可以成功地使用delfunc。如何将delfunc添加到按钮submit from del form,以及函数addfunc to submit button from add

$('#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调用URL
rest/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对您有帮助,那么我将发布我的答案。