javascript - 如何在jqGrid MVC版本中动态使单元格可编辑

标签 javascript jqgrid

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

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 公共(public)论坛或支持电子邮件地址上收到任何回复。距离我第一次接触他们已经过去了8天。还有其他人在 Trirand 的支持方面遇到问题吗?

非常感谢

最佳答案

请在您的所有问题中包含有关您使用(可以使用)的 jqGrid 版本以及有关 fork 的信息( free jqGrid ,商业 Guriddo jqGrid JS 或版本 <=4.7 的旧 jqGrid)。

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

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

如果您必须使用旧版本的 jqGrid 那么您应该遵循 the old answer 中描述的解决方案或在 this one 。只需直接调用 editRow 即可轻松实现该解决方案。间接使用 editRow(通过 inlineNavformatter: "actions")的解决方案要复杂得多。

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

关于javascript - 如何在jqGrid MVC版本中动态使单元格可编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42920011/

相关文章:

Javascript DRY 设计模式 - 函数与对象

javascript - 由于显示问题,如何在 Material UI TextField 中为电子邮件字段禁用规则 .MuiInputBase-inputType-121?

jquery - jqGrid - 将自定义 HTML 插入单元格

jquery - jqGrid 传递值到表单编辑

javascript - Nvd3图表不同时区

javascript - 在 React 中解释一下这个 render prop

javascript - Adobe CC createjs 股票代码示例

jquery - JQGrid动态列和搜索查询

java - 无法在 struts2 中获取 JSON Url 参数

jquery - JqG​​rid 选择可能或可能不可见的特定行