【问题标题】:jQgrid : Disable inline Save and Esc Handler while editing grid Row?jQgrid:在编辑网格行时禁用内联保存和 Esc 处理程序?
【发布时间】:2014-01-17 09:40:11
【问题描述】:

我正在开发一个使用 jQgrid 生成表数据的 asp.net MVC 4 项目。在我生成的网格中,我为一行中的特定列提供了内联编辑选项。

我的问题是在编辑特定行时,如果我按下 EnterEsc 键,我选择的行将退出编辑模式。

我想禁用这些事件 Enter 和 Esc 。

我用谷歌搜索了这个问题,我得到了一些有趣的帖子How to disable Save Handler on Jqgrid while doing editing

在上面的参考文章中,我可以看到 Jqgrid.src.js 文件中的某些行被注释掉了,我认为这不是最佳解决方案。

是否有任何其他方法可以在 Jqgrid 中同时禁用 EnterEsc 事件进行内联编辑。

Javascript 代码

jQuery("#Grid").jqGrid({
        url: baseUrl + '/api/Controller/method',
        datatype: "json",
        mtype: "POST",
        colNames: ['Col1', 'Col2', 'Col3', 'Col4', 'Col5'],
        colModel: [
        { name: 'col1', index: 'col1', align: 'center', editable: true, key:true },
        { name: 'col2', index: 'col2', align: 'center' },
        { name: 'col3', index: 'col3', align: 'center', editable: true, key:true },
        { name: 'col4', index: 'col4', align: 'center' },
        { name: 'col5', index: 'col5', align: 'center', editable: true, key:true }
        ],
        jsonReader: {
            root: 'data',
            id: 'col2',
            repeatitems: false
        },
        pager: $('#Pager'),
        rowNum: 10,
        rowList: [10, 25, 50, 100],
        autowidth: true,
        shrinkToFit: false,
        viewrecords: true,
        loadonce: true,
        autoencode: true,
        multiselect: true,
        height: '100%',
        width: '100%',
        caption: "Record"

        });

示例网格结构

注意:显示的网格图像不是使用上述代码生成的实际网格。

在上面的网格中,有一些列是可编辑的。我的场景就像我想将数据放在每一行的所有可编辑列中,这样我就可以通过单击放置在下方的按钮将网格数据更新到服务器网格(上图中未显示按钮)。这里我没有使用网格的 editUrl 属性。

目前,如果我编辑第一行并且不小心按 Enter 或 Esc 键,所选行将变为不可编辑。我希望将一行中的所有可编辑单元格保持为可编辑状态,直到我按下放置在网格下方的提交按钮。

我的 jQgrid 版本是 4.5.4

感谢任何帮助。

【问题讨论】:

    标签: javascript jquery jqgrid


    【解决方案1】:

    对于您使用的 jqGrid 版本既不包含 JavaScript 代码也不包含确切引用的问题很难回答。您没有描述您在网格中使用哪种形式的内联编辑。

    EscEnter 在内联编辑过程中的使用可以通过keys: true 选项进行管理。 keys 选项使用的确切语法取决于如何您使用内联编辑。例如,您可以直接调用editRow 或使用其他一些方法英里inlineNav 或为您调用editRowformatter: "actions"keys 选项的默认值已经是 false,因此您将代码中某处的值更改为 true

    【讨论】:

    • 我认为这是正确的,我认为他正在寻找密钥参数。
    • 我相信 key: true 是用来设置主键的。
    • @Cyber​​:您发布的代码包含语法错误'Col5] 而不是'Col5'](请参阅colNames)。您应该在关闭} 之前删除,(参见caption: "Record")。此外,您使用myType: "POST" 而不是mtype: "POST",因此将使用默认mtype: "GET"。您的问题是关于编辑,但您的代码不包含任何显示您如何使用内联编辑的内容。 colModel 中存在属性key: true,但内联编辑时有keys: true 选项。
    • 感谢您指出语法错误。我已经更新了我的帖子并将 key:true 设置为我所有的可编辑字段。这是正确的方法还是我必须将 key:true 设置为其他地方我的代码。
    • @Cyber​​:我之前写过你的问题是在keys不是 key。将key: true 用作一列或不具有唯一值的列是错误的。因此,您当前使用 key: true 的代码绝对是错误的。此外,您在jsonReader 中使用id: 'col2',这与其他列的key: true 相矛盾。您能否将您的问题附加到显示如何开始/使用内联编辑的代码中?您在编辑时遇到问题,但您发布的代码不包含任何编辑
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    相关资源
    最近更新 更多