我有一个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
相关。
手动点击刷新后,恢复正确的值。
我想知道如何在编辑后正确地获得此值。在代码编辑后,我应该以某种方式刷新网格吗?你会怎么做?还有更好的方法吗?
答案 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);
}