如何将其他postdata传递给添加记录函数 - JQGrid - MVC.净

Joe*_*Joe 4 .net c# jqgrid asp.net-mvc-2

我在MVC项目上使用JQGrid插件.我试图避免使用'Session'.我已经能够使用JQGrid中的serializedata方法将额外的postdata传递到我的编辑和删除函数中.

例如

serializeEditData: function (postdata) 
{
    var rowdata = jQuery('#gridId').getRowData(postdata.id);
    return {id: postdata.id, oper: postdata.oper, SomeExtraData: $('#extradata').val()};
}
Run Code Online (Sandbox Code Playgroud)

但是,似乎没有serializeAddData函数.是否有另一种方法可以在发送之前更改add方法的发布数据?

Ole*_*leg 9

一个方法 editGridRow它们分别实现了表单编辑这两个 "编辑"和"添加"对话框.因此,在两种情况下都可以使用相同的事件han`ler serializeEditData.例如,

$("#list").jqGrid('navGrid','#pager',
    {/*navGrid options*/},
    {/*edit options*/
        serializeEditData: function (postdata) {
            // your implementation of serializeEditData for edit
        }
    },
    {/*add options*/
        serializeEditData: function (postdata) {
            // your implementation of serializeEditData for add
        }
    },
    {/*del options*/},
    {/*search options*/}
Run Code Online (Sandbox Code Playgroud)

/);

通常,serializeEditData如果您需要以其他格式转换所有发布的数据,事件非常实用,例如进行JSON序列化.为了能够传递额外的postdata参数,你可以使用editData参数,它具有与jqGrid参数相同的含义postData:

$("#list").jqGrid('navGrid','#pager',
    {/*navGrid options*/},
    {/*edit options*/
     editData: {SomeExtraData: $('#extradata').val()}
    },
    {/*add options*/
     editData: {SomeExtraData: $('#extradata').val()}
    },
    {/*del options*/},
    {/*search options*/}
);
Run Code Online (Sandbox Code Playgroud)

或以这种方式更好(请参阅此答案关于函数的用法作为属性postData):

$("#list").jqGrid('navGrid','#pager',
    {/*navGrid options*/},
    {/*edit options*/
     editData: {SomeExtraData: function() {return $('#extradata').val();}}
    },
    {/*add options*/
     editData: {SomeExtraData: function() {return $('#extradata').val();}}
    },
    {/*del options*/},
    {/*search options*/}
);
Run Code Online (Sandbox Code Playgroud)