jqGrid - 仅编辑可编辑列的某些行

Cos*_*ean 3 javascript jquery jqgrid

是否可以在jqGrid中禁用标记为可编辑的列中的某些单元格?

从我所看到的,唯一的选择是"所有单元格都可编辑"或"没有单元格可编辑".有办法解决这个问题吗?

Ole*_*leg 8

我建议您使用这样命名的"内联编辑"进行行编辑.这种方法的最大优点是,它非常直观和用户.您可以在演示页面http://trirand.com/blog/jqgrid/jqgrid.html上查看它的工作原理.选择此演示"行编辑",然后在左侧树部分选择"使用事件"或"输入类型".有了这个方法,你可以实现任何自定义的验证所选的行是否应该被允许编辑或没有内部的事件处理的onSelectRowondblClickRow.如果允许编辑,则调用editRowjqGrid的方法.此方法为所有可编辑列创建输入控件,用户可以自然地修改行值.如果用户按"输入"键或取消"",则保存修改

我个人更喜欢editRowondblClickRow事件处理程序中实现方法调用.因此,用户可以像往常一样继续选择行,并且可以使用双击进行行编辑.伪代码如下所示:

var lastSel = -1;
var isRowEditable = function (id) {
    // implement your criteria here 
    return true;
};
var grid = jQuery('#list').jqGrid({
    // ...
    ondblClickRow: function(id, ri, ci) {
        if (isRowEditable(id)) {
            // edit the row and save it on press "enter" key
            grid.jqGrid('editRow',id,true);
        }
    },
    onSelectRow: function(id) {
        if (id && id !== lastSel) {
            // cancel editing of the previous selected row if it was in editing state.
            // jqGrid hold intern savedRow array inside of jqGrid object,
            // so it is safe to call restoreRow method with any id parameter
            // if jqGrid not in editing state
            grid.jqGrid('restoreRow',lastSel);
            lastSel = id;
        }
    },
    pager: '#pager'
}).jqGrid('navGrid','#pager',{edit:false});
Run Code Online (Sandbox Code Playgroud)