Необходимо сделать отдельные ячейки jqgrid редактируемыми на основе определенного значения. - PullRequest
0 голосов
/ 24 мая 2019

У меня есть jqGrid, и я хочу, чтобы определенные ячейки были редактируемыми на основе значения в отдельной скрытой ячейке. Таким образом, каждая строка в сетке не имеет такой же конфигурации. Другими словами, я не хочу, чтобы весь столбец был редактируемым.

Я поместил приведенный ниже код в событие loadComplete для сетки. Я перебираю каждую строку и устанавливаю для редактируемого свойства EstimatedCost и AverageSalePrice значение true, основываясь на скрытом значении ProductCatIndex.

var ids = $('#' + jqgrid_id).jqGrid('getDataIDs');
var count = $('#' + jqgrid_id).getGridParam('reccount');

for (var x = 0; x < count; x++) {
    var rowId = ids[x];

    if (row.ProductCatIndex == 2) {
        $('#' + jqgrid_id).jqGrid('setCell', rowId, 'EstimatedCost', '', '', { 'editable': true });
    }
    else if (row.ProductCatIndex == 3) {
        $('#' + jqgrid_id).jqGrid('setCell', rowId, 'AverageSalePrice', '', '', { 'editable': true });
    }
}

Я перебираю код и вижу, что он работает правильно, однако ячейки недоступны для редактирования. У меня есть cellEdit: true на уровне сетки, но я не устанавливаю редактируемое свойство для столбца, поскольку я пытаюсь установить его динамически в приведенном выше коде. Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 24 мая 2019

То, как вы это делаете, не имеет никакого эффекта

Я могу порекомендовать другой способ сделать это.

Ячейка недоступна для редактирования, если у нее есть класс «not-editable-cell», вместо этого в colModel задано значение «редактируемый».См. документы здесь

Таким образом, можно использовать функцию cellattr, так как она добавляет атрибуты во время создания.См. Также документы здесь

Установите для редактируемого свойства значение true и попробуйте следующий код:

colModel : [ 
    ...
    { name : 'EstimatedCost', editable : true,..., 
         cellattr : function( id, val, rawdata, cm, rdata)  { 
             ret = ""
             if( parseInt(rdata['ProductCatIndex'],10) !== 2 ) {
                 ret = " class='not-editable-cell'";
             }
             return ret;
         }
     }

Сделайте то же самое для другого поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...