我正在使用 Sigma 网格,从 PHP 填充它。Sigma 应该有一个公式处理功能,但它似乎只适用于 JS 加载的数据集。所以我想知道是否可以在加载页面后修改一些单元格,是否包含类似电子表格的公式?
这是Sigma生成的代码(其中一行):
19
2012-02-11
Bob
LB
128
0
0
0
所以我想要的效果是取最后一个单元格,并添加前 3 个单元格值(每个在 td 和 div 内)。
想法?
我正在使用 Sigma 网格,从 PHP 填充它。Sigma 应该有一个公式处理功能,但它似乎只适用于 JS 加载的数据集。所以我想知道是否可以在加载页面后修改一些单元格,是否包含类似电子表格的公式?
这是Sigma生成的代码(其中一行):
19
2012-02-11
Bob
LB
128
0
0
0
所以我想要的效果是取最后一个单元格,并添加前 3 个单元格值(每个在 td 和 div 内)。
想法?
已经想通了。此代码仅大致适用于使用 Sigma 网格的其他人。
将此作为单独的 JS 文件加载到标头中。
每次更改单元格时,它将启动重新计算,从而提供具有可编程公式的能力。
//now load the values from the retrieved table, after a change initiated by user
$(window).change(function() {
//all formulae go below here:
// Ordered trays formula
$('table.gt-table tbody tr').each(function() {
var tray = 0;
var ordcell = 0;
var traycode= $(this).find("td.gt-col-mygrid1-trays_code div").html();
var ordcells= $(this).find("td.gt-col-mygrid1-ordered_cells div").html();
if (parseInt(traycode) >0) {
tray = parseInt(traycode);
} else {
tray = 0;
}
if (parseInt(ordcells) >0) {
ordcell = parseInt(ordcells);
} else {
ordcell = 0;
}
if (tray > 0 && ordcell > 0) var ordtrays = ordcell/tray;
if (ordtrays > 0){
$(this).find("td.gt-col-mygrid1-ordered_trays div").html(ordtrays);
}
});
// end Ordered trays formula
}); // end the window change function
将以下内容添加到 gridoption
onCellClick: function(value, record , cell, row, colNo, rowNo,columnObj,grid){
overRowNo=rowNo;
overColNo=colNo;
cellValue=value;
},
afterEdit: function( value, oldValue, record, col, grid){
// ordered trays calculation
if(overColNo == 5 || overColNo == 6){
var text = $(this.activeCell).find('div.gt-inner').text();console.log(text);
if (!$.isNumeric(text)){ //jquery's isnumeric function
alert ('Please enter a valid number.');
// because cell 5 is a drop down select we don't need to scan for bad input; this is only for cell 6 - ordered cells
text = 0;
}
var traycode = mygrid.getColumnValue(5,overRowNo);
var ordcells = mygrid.getColumnValue(6,overRowNo);
if (parseInt(traycode) >0) {
tray = parseInt(traycode);
} else {
tray=text;
}
if (parseInt(ordcells) >0) {
ordcell = parseInt(ordcells);
} else {
ordcell= $('input.gt-editor-text').first().val();
}
//alert(tray+' '+ordcell);
if (tray > 0 && ordcell > 0) var ordtrays = Math.ceil(ordcell/tray);
if (ordtrays > 0){
mygrid.setColumnValue('ordered_trays',overRowNo,ordtrays);
mygrid.updateEditState();
mygrid.activeRecord.ordered_trays = ordtrays;
mygrid.refresh();
}
}