【问题标题】:How to dynmically make a cell editable in jqGrid MVC version如何在 jqGrid MVC 版本中动态使单元格可编辑
【发布时间】:2017-03-21 06:36:07
【问题描述】:

我想我可以使用事件 gridInitialized 运行循环,通过每行的 id 添加类“non-editable-cell”,但是添加了类,但是当该行进入编辑模式时,具有该类的单元格是仍然可以编辑。

function gridInitialized() { var grid = jQuery('#enabledLanguagesGrid'); 
    var ids = grid.getDataIDs(); 
    for(var i = 0; i < ids.length; i++)  
        var id = ids[i]; 
        if (grid.getCell(id, 'isCustom') === 'True') {
            grid.setCell(id, 'name', '', 'not-editable-cell')
        } 
    } 
}

当我使用 grid.editRow 进入编辑模式时,名称字段仍然是可编辑的。

另外,我在 trirand.net 公共论坛或支持电子邮件地址上没有收到任何回复。距离我第一次接触他们已经 8 天了。还有其他人在 Trirand 的支持方面遇到问题吗?

非常感谢

【问题讨论】:

    标签: javascript jqgrid


    【解决方案1】:

    请在所有问题中包含有关您使用(可以使用)的 jqGrid 版本以及有关 fork(free jqGrid、商业Guriddo jqGrid JS 或版本

    重要的是要理解,jqGrid 有 3 种可选的编辑模式:内联编辑、表单编辑和单元格编辑。 not-editable-cell 类将仅用于单元格编辑。您写了关于 editRow 的文章,它是内联编辑的一部分。它支持``not-editable-row` 类,可以在行上设置,以防止整行可编辑。

    您的需求的实现很大程度上取决于您的确切需求和您使用的 jqGrid 版本。如果您使用free jqGrid fork,则存在最简单的解决方案,这是我从 2014 年底开始开发的(在将主 fork 商业化并将其重命名为 Guriddo jqGrid JS 之后)。免费 jqGrid 允许将列的editable 属性定义为回调函数。该功能在the wiki article 中进行了描述。回调函数有rowid作为参数,可以获取行的数据,分析数据并返回真/假(允许或不允许编辑单元格)取决于任何自定义条件。所有编辑模式都实现了editable 属性作为回调。

    如果您必须使用旧版本的 jqGrid,那么您应该遵循the old answerthis one 中描述的解决方案。只有直接致电editRow,才能轻松实施解决方案。间接使用editRowinlineNavformatter: "actions")的解决方案要复杂得多。

    最后的话。您应该尝试从不使用您发布的gridInitialized 之类的代码,因为它会修改循环中页面上的数据。重要的是要理解,HTML 页面上一个元素 的修改遵循web browser reflow。网络浏览器必须重新计算或更改页面上所有现有元素的位置或其他属性。因此,如果您修改页面上的元素,您实际上会增加代码的复杂性并降低页面的性能。我建议您阅读 the old article 并使用 cellattrrowattr 和自定义格式化程序,而不是更改循环中的数据。

    【讨论】:

    • 非常感谢我使用 trirand.net 5.2.0 版的 MVC 版本提供的有用信息。我希望在行编辑期间禁用某些单元格,具体取决于正在编辑的行中其他单元格之一的值。
    • @SimonRyan:Guriddo jqGrid JS 是 商业 版本(请参阅许可证和价格here)。我开发了替代分叉,我完全免费提供。我当然不支持 Guriddo。我只能向您发送电子邮件至Guriddo forum。我可以建议您的唯一方法是关注my old answer,我在回答中引用了它。
    • 谢谢。我们可能会更改为您的分叉,因为该公司尚未实现明显的“支持”:(
    • @SimonRyan:我在旧的 MIT/GPL-licenses 下提供免费的 jqGrid,它允许您随时制作自己的 fork,并从点开始独立开发您的 fork。我不能给你更多建议。我建议您查看免费 jqGrid 中实现的功能。请参阅the pagethe wiki 以及所有以前发布的版本的自述文件。例如,最后一个提供了the demo,它演示了最后实现的功能。
    猜你喜欢
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多