Javascript 如果在jqgrid中设置了editurl,如何在表单编辑中强制dataProxy调用

Javascript 如果在jqgrid中设置了editurl,如何在表单编辑中强制dataProxy调用,javascript,jqgrid,Javascript,Jqgrid,jqGrid是使用下面的代码定义的。editurl用于内联编辑。 dataProxy用于在表单编辑中上载图像 但是,如果在表单编辑中按下“保存”按钮,则不会调用dataProxy。 如何强制调用dataProxy或以其他方式允许在jqGrid列中上载图像 $grid.jqGrid({ datatype: "json", url: '/GetData', editurl: '/Edit', ... }); $grid.jqGrid("navGr

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,
}
);

您没有描述使用
dataProxy
的目标,但是如果确实需要使用该功能,您应该遵循以下几点:

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

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

使用数据代理的目的是允许在jqGrid中上载图像。同一个jqGrid页面用于编辑许多表。如果使用$.extend定义dataproxy,如何将额外的参数(表名)传递给dataproxy?@Andrus:我不确定我是否理解您的意思
dataProxy
函数将被调用,并将带有前缀
的表名作为第三个参数
“set\ux”
。你可以利用事实。或者,您可以使用
editData
参数来扩展通过表单编辑发送的
postData
信息。
postData
将是对象的一部分,该对象是
dataProxy
的第二个参数。