2012-04-10 3 views
0

У меня есть случай, когда я хочу переключить ячейку на readonly/editable, в зависимости от некоторого состояния. Он почти работает, я могу сделать это только для чтения, но не редактируем снова.Переключить ячейку readonly/editable в jqGrid

grid.setColProp("a", { 
    editoptions: { 
     value: data.opPadrag, 
     dataEvents: [{ 
      type: 'change', 
      fn: function (e) { 
       var selr = grid.jqGrid('getGridParam', 'selrow'); 
       if (someCondition) grid.jqGrid('setCell', selr, 'c', '', 'not-editable-cell'); 
       else 
       // Problem here - how to make it editable. I've tried a few ways, none worked 
       // grid.jqGrid('setCell', selr, 'c', '', 'editable-cell'); 
       // grid.jqGrid('setCell', selr, 'c', '', 'editable'); 
       // grid.jqGrid('setCell', selr, 'c', '', ''); 
      } 
     }] 
    } 
}); 

Любые идеи?

ответ

1

Там будет не встроенная функция для удаления класса из клетки, вы можете сделать это вручную, как это:

grid.setColProp('a', { editoptions: { value: data.opPadrag, dataEvents: [{ type: 'change', fn: function (e) { 
    var selr = grid.jqGrid('getGridParam', 'selrow'); 
    if (someCondition) { 
     grid.jqGrid('setCell', selr, 'c', '', 'not-editable-cell'); 
    } else { 
     var colModel = grid.jqGrid('getGridParam', 'colModel'); 
     for (var iCol = 0; iCol < colModel.length; iCol++) { 
      if (colModel[iCol].name === 'c') { 
       var row = grid[0].rows.namedItem(selr); 
       var cell = row.cells[iCol]; 
       $(cell).removeClass('not-editable-cell'); 
       break;    
      } 
     } 
    } 
} }] } }); 
+0

Малый опечатка: 'iCol [iCol] .name' должен be 'colModel [iCol] .name'. – Oleg

+0

Исправлено, спасибо. – tpeczek

+0

Добро пожаловать! – Oleg

0

Вы можете выполнить это действие в большей эффективности.

Используя Jquery одну строку кода:

$("#<GridId> tr[id='<RowId>'] td[aria-describedby='<GridId>_<ColumnName>']").removeClass('not-editable-cell'); 

Пример:

$("#maingrid tr[id='1'] td[aria-describedby='maingrid_column1']").removeClass('not-editable-cell'); 

спасибо,

Гэвриел

Смежные вопросы