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

时间:2017-03-21 06:36:07

标签: 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公共论坛或支持电子邮件地址的任何回复。我第一次接触他们已经8天了。还有其他人在Trirand遇到支持问题吗?

非常感谢

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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