Ячейка jqrid только для чтения должна автоматически обновляться после встроенного редактирования - PullRequest
1 голос
/ 25 октября 2011

У меня есть jqrid, и я использую встроенное редактирование. Проблема в том, что одна из ячеек доступна только для чтения, а ее значение основано на другой:

{ name: 'ActivityId', index: 'ActivityId', width: 200, align:'left', editable: true, editrules: { required : true }, edittype:"select", editoptions: { dataUrl: '/Invoice/GetActivities/' + organisationId,
                            buildSelect: function(data) {
                                var response = jQuery.parseJSON(data);

                                var s = '<select>';

                                if(response.rows && response.rows.length) {
                                for (var i = 0, l=response.rows.length; i<l ; i++) {
                                         var ri = response.rows[i];
                                         s += '<option value="'+ri.Id+'">'+ri.Descriptor+'</option>';
                                     }
                                 }
                                 return s + "</select>";

                                return s;
                            }
                } },

              { name: 'PriceGroup', index: 'PriceGroup', align: 'center', editable: false },

Таким образом, значение в столбце PriceGroup рассчитывается на основе значения ActivityId.

Так что это нормально при загрузке сетки, но после выполнения редактирования эта ячейка имеет значение, относящееся к предыдущему ActivityId.

Правильное значение восстанавливается после того, как я вручную нажму кнопку обновить.

Мне интересно, как получить правильное значение после редактирования. Должен ли я как-то обновить сетку после правок в коде? Как бы вы это сделали? Есть ли лучший способ?

1 Ответ

1 голос
/ 25 октября 2011

Если вы посмотрите на jqGrid wiki , вы можете передать функции editRow функцию успеха:

jQuery("#grid_id").jqGrid('editRow',rowid, keys, oneditfunc, succesfunc, url, extraparam, aftersavefunc,errorfunc, afterrestorefunc);

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

function(rowid){
   var dataColumn = 2;
   var dataValue = $('#grid_id').getCell(rowId,dataColumn);
   var resultColumn = 3;
   $('#grid_id').setCell(rowId,resultColumn,dataValue*5+1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...