【问题标题】:How to disable editing for some cells in row editing of JQGrid?如何在 JQGrid 的行编辑中禁用某些单元格的编辑?
【发布时间】:2011-12-05 03:14:35
【问题描述】:

当我点击网格的任何一行时,所有可编辑的列都变为可编辑的。

我希望某些列可以在每一行上分别进行编辑。

                 Column 1,   Column 2,     Column 3             
ROW Number 1 - editable,     non-editable, non-editable  
ROW Number 2 - non-editable, editable,     non-editable    
ROW Number 3 - editable,     non-editable, non-editable  

提前致谢

【问题讨论】:

    标签: javascript jqgrid


    【解决方案1】:

    如果您使用inline editing mode 并希望动态地决定该行的哪些单元格将是可编辑的,例如根据单元格的包含,您可以按照我描述的@987654322 的方式执行此操作@。你也可以用另一种方法来做到这一点:

    $(this).jqGrid('setColProp', 'YouColumnName', {editable:false});
    

    所以你应该在调用editRow 方法之前将editable 设置为falsetrue 之前。这样你就可以实现任何你想要的逻辑。

    更新: Free jqGrid 允许将 editable 定义为回调函数。见the wiki article。它允许在某些行中使列可编辑,而对其他行保持不可编辑。

    【讨论】:

    • 好的,这样我就可以连续检查一个单元格的值了。然后使其可编辑:false。所以它对于选定的行变得不可编辑,对吧..?
    • @stacktrace:editRow 方法测试目前哪些列是可编辑的。它为单元格编辑创建<input><select> 控件,仅用于可编辑列。因此,如果您将某个列的临时列属性设置为editable:false,则不会创建用于编辑的控件,并且相应的单元格将像您想要的那样不可编辑。在调用editRow 方法后,您可以直接将设置更改回您想要的任何值。这样您就可以完全解决您遇到的问题。
    • 嗨奥列格,你能帮我解决这个问题吗? stackoverflow.com/questions/7752611/…谢谢
    【解决方案2】:

    我也有类似的要求,只是扩展了Oleg 在他的回答中已经提到的内容:

    //get colModel properties
    var cm = jQuery("#grid").jqGrid('getColProp','myColumn');
    
    //some condition to enable or disable editing
    cm.editable = false;
    
    //always call editRow after changing editable property
    jQuery('#grid').jqGrid('editRow', rowId, {});
    
    //set default editable option
    cm.editable = true;
    

    干杯:)

    【讨论】:

    • 设置cm.editable = true后为什么不最后调用jQuery('#grid').jqGrid('editRow', rowId, {});
    • 因为这会将单元格再次设置为可编辑。在这里,您要做的是使特定单元格有条件地不可编辑,但其余列保持可编辑状态。 cm.editable = true; 是在再次调用 editRow 时将 col 模型设置回可编辑状态。
    猜你喜欢
    • 2011-02-21
    • 2019-05-09
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    相关资源
    最近更新 更多