【问题标题】:jqGrid passing extra parameters when calling delGridRowjqGrid在调用delGridRow时传递额外的参数
【发布时间】:2013-08-26 10:45:14
【问题描述】:

我正在阅读有关删除行 API 工作原理的文档 here, 但我没有找到任何方法来干净地传递额外的参数。它可以在编辑和获取数据时使用,但不能在删除时使用。

基本上解释我为什么需要它,我有基于会话的可编辑网格,但是会话需要一个唯一的 guid,它是在将行写入会话时生成的,然后我将它们呈现为具有特定 ID 的隐藏输入(网格外部)所以每个网格都知道哪个输入是他的。 我知道 gridDelRow 有“url”选项,我可以将 url 与查询字符串连接起来,但是它会破坏我当前看起来像这样的控制器操作方法的当前行为

public virtual ActionResult EditRow(RowGridViewModel rowGridViewModel, string guid)
{
        return HandleGridItemEdit(rowGridViewModel, guid);
}

这是我的 jqGrid API 调用

$(gridObject).jqGrid("delGridRow", id, {
    "top": "",
    "left": "",
    "width": "150px",
    "zIndex": 99999,
    "modal": true,
    "drag": false,
    "closeOnEscape": true,
});

因此,如果我编辑 url 选项,它会破坏我当前的功能,这不是一个选项,因为使用了相同的行编辑方法。 我也知道我可以用这些数据渲染隐藏列,但这真的很难看。因此,如果您对如何完成此操作有任何建议,我将不胜感激。

【问题讨论】:

    标签: c# javascript jquery asp.net-mvc jqgrid


    【解决方案1】:

    你可以这样做

    function deleteRow(id, gridObject) {
        var gridGuid = getGridSessionGuid(gridObject);
        $(gridObject).jqGrid("delGridRow", id, { "delData": { guid: gridGuid } });
    }
    

    编辑: Ups 没有看到 cmets

    【讨论】:

    • 好吧,既然我不能接受@Olegs 评论作为答案,我会接受你的,它仍然是比我更好的解决方案。
    【解决方案2】:

    我实际上找到了一个不错的解决方案,它不会破坏我的代码我只需要注意所有操作方法都具有参数“rowGridViewModel”的相同名称。

        function deleteRow(id, gridObject) {
            var gridGuid = getGridSessionGuid(gridObject);
            $(gridObject).jqGrid("delGridRow", id, {
                "serializeDelData": function (postdata) {
                    return { rowGridViewModel: postdata, guid: gridGuid };
                },
            });
        }
    

    【讨论】:

    • 您可以使用delGridRowdelData: {guid: gridGuid}选项来扩展delGridRow发布的数据。
    • 哇,谢谢我怎么会错过那个……现在我在文档中看到了。而且它的解决方案比我的更好。
    猜你喜欢
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 2019-02-04
    • 2017-04-09
    相关资源
    最近更新 更多