【问题标题】:How to force dataProxy call in form editing if editurl is set in jqgrid如果在 jqgrid 中设置了 editurl,如何在表单编辑中强制 dataProxy 调用
【发布时间】:2012-05-06 20:10:10
【问题描述】:

jqGrid 使用下面的代码定义。 editurl 用于内联编辑。 dataProxy 用于在表单编辑中上传图片。

但是,如果在表单编辑中按下保存按钮,则不会调用 dataProxy。 如何强制调用 dataProxy 或以其他方式允许在 jqGrid 列中上传图片?

$grid.jqGrid({
        datatype: "json",
        url: '/GetData',
        editurl: '/Edit',
... 
});


$grid.jqGrid("navGrid", "#grid_toppager", { 
            search:  true,
            del: true,
            add: true,
            view: true,
            edit: true
          }, 

        {
    url: null,
    dataProxy : function(opt, args) { 
      alert('Why this box does not appear on form save if jqgrid editurl is set'); 
      },

    beforeInitData: function () {
       var
         colm = $grid.jqGrid('getColProp', '_image'),
         selRowId = $grid.jqGrid('getGridParam', 'selrow');
      colm.editoptions.src = '/GetImage?id=' + selRowId;

    },
   closeAfterEdit: true,
   reloadAfterSubmit: true,
}
);

【问题讨论】:

    标签: javascript jqgrid


    【解决方案1】:

    您没有描述使用dataProxy的目的,但如果您确实需要使用该功能,您应该关注:

    • 您应该将dataProxy 定义为jqGrid 的回调。您可以使用$.extend 更改$.jgrid.defaults
    • 添加/编辑或删除操作的url 应为null,或者您应将editGridRowdelGridRowuseDataProxy 选项显式设置为true(例如覆盖editurl不是null)。

    因此,在您的情况下,您应该将 dataProxy 从“编辑”对话框列表移动到 jqGrid 选项列表。

    【讨论】:

    • 使用数据代理的目的是允许在jqgrid中上传图片。相同的 jqGrid 页面用于编辑大量表格。如果使用$.extend来定义dataproxy,如何将额外的参数(表名)传递给dataproxy?
    • @Andrus:我不确定我的理解是否正确。 dataProxy 函数将在 the line 中调用,并具有前缀为 "set_" 的表名作为第三个参数。你可以使用事实。或者,您可以使用editData 参数扩展postData 通过表单编辑发送的信息。 postData 将是对象的一部分,它是dataProxy 的第二个参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多