Я пытаюсь реализовать простую электронную таблицу, используя 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 не были вызваны (я не получаю сообщения с предупреждениями), поэтому я не могу записать новое значение в столбце Итого. Кстати, URL editurl является фиктивным, он ничего не возвращает (я также попытался установить 'clientArray' безуспешно).
Итак, как рассчитать столбец Всего на стороне клиента?
К вашему сведению: идея заключается в том, чтобы сохранить сетку, используя внешнюю кнопку *1021* , а также динамически заполнить столбцы, как показано здесь и здесь