jqgrid:根据表单编辑中的单元格值将可编辑单元格更改为不可编辑

问题描述:

我的问题是,我想根据所选行的单元格内容在编辑表单中更改可编辑单元格被编辑。 我在这个链接中使用了Oleg的例子:JQGrid: Dynamically set a cell to uneditable based on content想知道如何将单元格从可编辑更改为不可编辑,但我无法获取单元格值以便比较它并决定是否要更改单元格的编辑选项。jqgrid:根据表单编辑中的单元格值将可编辑单元格更改为不可编辑

更新的代码:

var Setcelluneditable=function(form) { 
     return function (form) { 
     var id = jQuery(list).getGridParam('selrow'); 
     var ret = jQuery(list).jqGrid('getRowData',id); 
     alert("Arrived="+ret.Arrived); 
     if (ret.Arrived=='Yes') 
     {alert("hello"+id); 
     jQuery(list).setCell(id,'Arrived','',{color:'red'}, editable:'0'});} 
    } 
    }; 

jQuery(list).jqGrid('navGrid',pager,{edit:true,add:true,del:true,search:false,view:true, reload:true}, 
       { 
        width:colwidth, 
        height:"auto", 
        reloadAfterSubmit:true, 
        closeAfterEdit: true, 
        recreateForm: true, 
        ajaxEditOptions: {cache: false}, 
      beforeInitData : Setcelluneditable("#editmod") 
       }, 
       { 
          width:colwidth, 
          height:"auto", 
          reloadAfterSubmit:true, 
          closeAfterAdd: true, 
          recreateForm: true, 
          drag: false 
       }, 
       {}, 
       {}, 
       {}, 
       {}); 

这似乎并没有工作,因为我改变已经建立的网格。

我想我找到了这样做的方式,但它不是在我看来,没有最好的一个可以有:

onSelectRow: function(id){ 
     var ret = jQuery(list).jqGrid('getRowData',id); 
     if (ret.Arrived=='Yes') 
     { 
      jQuery(list).setColProp('Arrived',{editable:false});} 
     else { jQuery(list).setColProp('Arrived',{editable:true});}} 

我每次一个选择一行改变ColProp。在onSelectRow事件

+0

真的帮助很大 – Habeeb 2014-08-21 09:27:50

selRowId = $(list).jqGrid ('getGridParam', 'selrow'); 
var cm = $(list).jqGrid('getGridParam', 'colModel'); 
for(x=0; x<cm.length; x++){ 
    if(cm[x].name == 'ID'){ 
     $('#' + selRowId + '_' + cm[x].name).attr('disabled', true); 
    } 
} 

代码