【问题标题】:Inline JqGrid save button click issue内联 JqGrid 保存按钮单击问题
【发布时间】:2016-01-27 19:03:20
【问题描述】:

我几乎一天都在集思广益,讨论如何使用内联编辑 jQgrid 保存按钮调用我的 MVC 控制器操作。 请看下面的截图

我已经为 jqGrid 尝试了以下配置

$("#tbl-items").CreateGrid({
                url: '@Url.Action("ItemList", "Item")',
                editurl: '@Url.Action("Create", "Item")',
                jsonReader: { id: "ItemID" },
                prmNames: { id: "ItemID" },
                colNames: ['Item ID', Item Name],
                colModel: [{ name: 'ItemID', index: 'ItemID', sorttype: 'integer', hidden: true, key: true },
                   { name: 'ItemName', index: 'ItemName', sortable: true, autowidth: true, shrinkToFit: true, searchoptions: { sopt: ['cn'] }, editable: true }],
                gridCompleteCallback: function () {
                    //Code to bind my custom edit and delete button as per the requirement
                },
                container: "#container-item",
                server: true,
                pagerID: "#itempager",
                sortName: 'ItemName',
                sortorder: 'asc',
                loadingText: 'Loading please wait',
                noRecordText: 'Not records found'
            });

为了覆盖保存事件,我尝试了以下脚本

 function saveItem(action) {
                return {
                    url: '@Url.Action("Create", "Item")', // Url to my MVC controller
                    onclickSubmit: function (params) {
                        var list = $("#tbl-items");
                        var selectedRow = list.getGridParam("selrow");
                        // Code 
                    }
                };
            }

$("#tbl-items").jqGrid('navGrid', '#itempager',
            {
                //add: false,
                edit: false,
                del: false
            },
            saveItem('PUT')
        );
        $("#tbl-items").jqGrid('inlineNav', '#itempager',
            {
                edit: false,
                add: true, 
            });

我知道我在 jqGrid 配置中做错了什么。任何人都可以纠正我解决我的问题。提前致谢

【问题讨论】:

  • 错误很明显:您将表单编辑选项与内联编辑选项混合使用。为了给您确切的建议,我需要知道您使用哪个版本的 jqGrid 以及哪个分支free jqGridGuriddo jqGrid JS 或版本
  • @Oleg 我正在使用 JqGrid 4.5.1
  • 我得离开一个小时。首先查看inlineNaveditParams 选项。稍后我会写答案。
  • @Oleg 试过但没有运气。
  • 好的,我回来了。请描述您希望使用哪些导航按钮和哪些 URL 以及哪些 HTTP 方法。您的代码使用edit: false, del: false 调用navGrid。因此它添加了添加表单编辑按钮、刷新和搜索。然后你用edit: true, add: true(默认)和save: true, cancel: true调用inlineNav,这也是默认的。结果,您将拥有带有两个添加按钮(一个表单编辑,一个内联编辑)和一个编辑按钮(内联编辑)的导航栏。是你想要的吗? Add ('@Url.Action("Create", "Item")') 需要设置哪些 URL,Edit 需要设置哪些 URL?

标签: jquery asp.net-mvc jqgrid inline inline-editing


【解决方案1】:

要使用表单编辑的添加按钮,您根本不需要使用inlineNav。您只需使用带有相应参数的navGridnavGrid 方法添加了一些按钮,并在单击导航栏的相应按钮时调用相应的 jqGrid 方法。 navGrid 的完整参数列表在the documentation 中描述,它看起来像

$("#tbl-items").jqGrid("navGrid", "#itempager", navGridOptions,
    prmEdit, prmAdd, prmDel, prmSearch, prmView);

navGridOptions 将用于指定navGrid 本身的选项,例如您使用的{edit: false, del: false}。下一个参数(您使用saveItem('PUT'))指定editGridRow 方法的选项,单击导航栏的编辑按钮将调用该方法。您使用navGridedit: false 选项,该参数将被忽略。下一个参数指定在单击添加按钮时调用的editGridRow 的选项。您没有指定任何选项,因此将使用默认选项。 jqGrid 将使用editurl 作为选项。

要保存新行,需要按表单编辑的提交按钮。 不需要保存按钮。它将仅用于内联编辑,用户首先单击由inlineNav 添加的添加/编辑按钮,然后用户需要单击保存按钮以保存更改。因为你写了你“只需要设置添加表单编辑按钮”,你应该删除inlineNav,这将从导航栏中删除不需要的保存按钮。

更新:如果您确实需要使用内联编辑并且没有表单编辑,那么您应该在没有添加按钮的表单中使用navGrid,然后使用@ 987654346@ 添加添加按钮并在editParamsaddParams.addRowParams 选项中指定url 选项。需要同时使用这两个选项,因为您使用旧的 jqGrid 4.5.1,其中包含错误的 inlineNav。不过我希望下面的代码能正常工作:

$("#tbl-items").jqGrid('navGrid', '#itempager',
    {
        add: false,
        edit: false,
        del: false
    }
);
$("#tbl-items").jqGrid('inlineNav', '#itempager',
    {
        edit: false,
        add: true, 
        editParams: {
            keys: true,
            url: '@Url.Action("Create", "Item")'
        },
        addParams: {
            addRowParams: {
                keys: true,
                url: '@Url.Action("Create", "Item")'
            }
        }
    }
);

我添加了keys: true,它允许通过按 Enter 键来保存行。我建议您更新到free jqGrid 以减少问题并能够使用the wiki article 中描述的简化选项进行内联编辑。

【讨论】:

  • 我尝试了 navGrid,但没有出现带有添加按钮的导航。导航仅在我使用 inlineGrid 时出现,我已按以下方式完成 $("#tbl-items").jqGrid('navGrid', '#itempager', {add : true },{}, {id:"btnAdd"} ) 。我是不是哪里出错了
  • @Jayaraj.K:可能你使用了一些旧项目,它开发了别人,代码包含$.jgrid.navadd: false 的设置。 navGridadd 选项的默认 值为true。以任何方式明确使用$("#tbl-items").jqGrid('navGrid', '#itempager', {add : true }); 也应该有效。我仍然不明白你目前的问题是什么。添加按钮有效吗?您是否在单击“添加”按钮时看到“添加表单”?如果单击添加表单的提交按钮,是否会调用 URL @Url.Action("Create", "Item")
  • @Jayaraj.K:如果您点击the demo 上的添加按钮,您将看到表单编辑 的工作原理(本地原因)。 Another demo 在一个导航工具栏中同时显示表单编辑和内联编辑。保存按钮仅在使用内联编辑时起作用。您应该确定您真正需要的编辑模式,并使用相应的方法和选项。
  • Demo 第二种模式是我的要求。我尝试了对我不起作用的 navGrid。 inlineNav 似乎很好,但是单击保存按钮时屏幕截图中显示的错误(找不到资源)是我面临的真正问题。
  • @Jayaraj.K:你说的“第二种模式”是什么意思?你的意思是第二个“+”按钮吗?第一个“+”按钮使用form editing,第二个“+”按钮使用inline editing。我之前明确地问过你需要什么模式,你回答:我只需要设置添加表单编辑按钮。我根据你的陈述写了我的答案。是不是错了,您确实需要内联编辑?如果您需要使用inlineNaveditParams 选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-02
  • 1970-01-01
  • 1970-01-01
  • 2014-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多