我正在尝试使用jqGrid实现一个简单的电子表格。这些是网格列:
ID | Name | LastName | Data1 | Data2 | Total
(总计将是Data1 + Data2)
我的javascript代码如下所示:
$(function() {
var lastsel;
jQuery("#my_excel_grid").jqGrid({
url:'data_excel.php',
datatype: "json",
colNames:['id','name', 'lastname', 'data1','data2','total'],
colModel:[
{name:'id',index:'id', width:55, sortable:false},
{name:'name',index:'name', width:90},
{name:'lastname',index:'lastname', width:100},
{name:'data1',index:'data1', width:80, align:"right", editable:true},
{name:'data2',index:'data2', width:80, align:"right", editable:true},
{name:'total',index:'total', width:80,align:"right",
formatter: function (cellvalue, options, rowObject)
{
// Harcoded index won't work in the real life excel grid
// since the columns will be populated dynamically
return parseInt(rowObject[3]) + parseInt(rowObject[4]);
}
},
],
rowNum:10,
rowList:[10,20,30],
pager: '#my_excel_pager',
sortname: 'id',
sortorder: "desc",
caption:"Excel",
editurl:"data_excel.php?op=edit",
onSelectRow: function(id) {
if (id && id !== lastsel) {
jQuery('#my_excel_grid').restoreRow(lastsel);
jQuery('#my_excel_grid').editRow(id, true);
lastsel = id;
}
},
beforeSubmitCell: function(rowid, celname, value, iRow, iCol) { alert("beforeSubmitCell"); },
afterSaveCell: function (rowid, celname, value, iRow, iCol) { alert("afterSaveCell"); },
}); });
我遇到的问题是没有调用 beforeSubmitCell 和 afterSaveCell (我没有收到警报消息),所以我不能写“总计”列中的新值。顺便说一下, editurl url是虚拟的,它没有返回任何东西(我也试过设置'clientArray'没有成功)。
那么,如何计算客户端的Total列?
仅供参考:我们的想法是使用external "Save" button保存网格,并按照here和here
动态填充列答案 0 :(得分:1)
jqGrid有三个editing modes您可以使用:inline editing,form editing和cell editing。如果您使用editRow和restoreRow,则表示您使用the inline editing mode。 afterSaveCell和beforeSubmitCell事件仅在单元格编辑模式下使用。
所以你需要做的是
beforeSubmitCell
和beforeSubmitCell
事件。jQuery('#my_excel_grid').editRow(id, true);
jQuery(this).jqGrid('editRow', id, true, null, null, 'clientArray', {}, function(rowid,issuccess){alert(rowid);});
醇>