【问题标题】:How to send extra data in jqGrid's "Add Row" request?如何在 jqGrid 的“添加行”请求中发送额外的数据?
【发布时间】:2012-07-05 21:19:36
【问题描述】:
  • 使用 jqGrid 的 ASP.NET MVC 组件

我有一个运行良好的 jqGrid,除了一件事:它是一个鞋子网格,我必须将其与 ShoeOwner 关联(更改对象名称以保护无辜者)

所以当我有一个网格时,它只显示特定 ShoeOwner 拥有的鞋子。当系统的用户决定添加 Shoe 时,在发送该请求之前,我需要在请求中添加一个附加参数,将这个新 Shoe 与这个特定的 ShoeOwner 相关联。 (否则请求将作为一个孤独的鞋到达控制器。)

由于我使用的是 MVC 组件,因此我不能在实例化时将其粘贴到 jqGrid() 对象中 - 看来我要么需要:

  • 将参数添加到 jqGrid 将在发送添加(或编辑,就此而言)请求时发送的数据集(现在它只发送 Shoe 信息) - 问题在于在实例化后,我必须以编程方式将参数添加到 jqGrid,但到目前为止,我还无法使用 editParamsaddParams 来做到这一点。

  • 在请求发出之前钩入一个事件,然后在其中添加附加信息。这里的问题是我无法在发送“添加新行”请求之前找到可靠触发的事件。

有谁知道如何将使用 jqGrid 添加的实体与其所属的父实体关联起来?

【问题讨论】:

    标签: asp.net-mvc jqgrid jqgrid-asp.net


    【解决方案1】:

    你可以监听addOptions/editOptions..的beforeSubmit事件给请求添加额外的参数。

    例如

    var addOptions = {
        editCaption: 'Add Post',
        processData: "Saving...",
        width: 420,
        closeAfterEdit: true,
        closeOnEscape: true,
    
        beforeSubmit: function (postdata, form) {
            var $grid = $(gridName);
    
                // additional parameters
            postdata.AdditionalData1 = ...
            postdata.AdditionalData2 = ...
    
            return [true];
        }
    };
    
    
    $(gridName).jqGrid('navGrid', pagerName, {
                cloneToTop: true,
                search: true,
                view: true
            },
    
    editOptions, addOptions, deleteOptions);
    

    【讨论】:

    • 不幸的是,当我尝试以编程方式添加该事件处理程序时,它不起作用,例如: $('#MyGrid').jqGrid().setGridParam({ addOptions: { beforeSubmit: function(postdata , form) { alert('beforesubmit FIRE!'); } } })
    • 该函数似乎已附加(即,运行 getGridParam('addOptions').beforeSubmit() 会产生警报消息),但在提交时它似乎没有触发。 :(
    • 你能发布你的代码吗?我在我的博客中经常使用 jqgrid,并且我使用 beforeSubmit 事件来添加必须在请求中发送的额外参数。一件重要的事情是你必须在最后做 return [false];
    猜你喜欢
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    • 2012-10-12
    相关资源
    最近更新 更多