jqgrid只读单元格需要在内联编辑后自动更新

时间:2011-10-25 03:18:16

标签: jqgrid

我有一个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 个答案:

答案 0 :(得分:1)

如果查看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);
}