使用的jqGrid的setFooterData函数来计算像this question总量之后,这是我的网格和功能:的jqGrid取决于其他列单元格计算总列单元格量值
<script type="text/javascript">
function calculateTotal(grid_ , column_id_)
{
var _total_amount = 0;
var i = getColumnIndexByName(grid_ , column_id_);
// TO ADD - calculate only if row "status" cell = "1:Confirmed"
$("tbody > tr.jqgrow > td:nth-child("+(i+1)+")" , grid_[0]).each(function()
{
_total_amount += Number(getTextFromCell(this));
});
return _total_amount;
}
function getColumnIndexByName(grid_ , column_id_)
{
var cm = grid_.jqGrid('getGridParam','colModel');
for (var i=0,l=cm.length; i<l; i++)
{
if (cm[i].name===column_id_)
{
return i; // return the index
}
}
return -1;
}
function getTextFromCell(cellNode)
{
return cellNode.childNodes[0].nodeName === "INPUT"?
cellNode.childNodes[0].value:
cellNode.textContent || cellNode.innerText;
}
$(document).ready(function() {
var grid = $("#list"),lastSel;
grid.jqGrid({
url:'url',
datatype: "xml",
loadonce:true ,
async: false,
colNames: ['Inv No', 'Name' , 'Amount' , 'Status'],
colModel: [
{ name: 'id', index: 'id', width: 65, sorttype: 'int', hidden: true },
{ name: 'name', index: 'name', editable: true, width: 90, sortable: false },
{ name: 'amount', index: 'amount', editable: true, width: 70, formatter: 'number', align: 'right', sortable: false },
{name:'status',index:'status', width:90, sorttype:"int" , editable:true,
edittype:"select", formatter:'select',
editoptions:
{
value:"1:Confirmed ;2:Open ; 3:Rejected" ,
dataInit: function(elem)
{
$(elem).width(90);
}
}
},
],
rowNum: 1000,
pager: '#pager',
viewrecords: true,
sortorder: "desc",
height: "100%",
footerrow:true,
xmlReader: {
root:"rows",
row:"row",
repeatitems:false
},
shrinkToFit: false,
beforeSelectRow: function(row_id_, e)
{
},
onSelectRow: function(id)
{
grid.jqGrid('saveRow' , lastSel , false, 'clientArray');
grid.editRow(id , false);
lastSel=id;
},
loadComplete:function()
{
grid.jqGrid('footerData' , 'set' , {name:'TOTAL:' , amount: calculateTotal(grid , 'amount')});
}
});
});
</script>
我的问题是如何计算总金额总和取决于iniside“状态”组合框中的值。只有当“状态”单元格中的值等于“确认”(= 1)时,我才想要总和该量。
这怎么办?
谢谢。
我忘了提及你关于你的代码中的一些错误。你应该小心空白和换行。例如'value:“1:确认; 2:打开; 3:被拒绝的”'将被解释为树值为“1”,“2”和“3”(!!!),相应的数据为“确认”,“开放”和“拒绝”。而且在'colModel'定义的末尾加上“},]”尾随的逗号是语法错误。独立于你典型的代码格式风格,我建议你使用[Kernighan&Ritchie](http://en.wikipedia.org/wiki/Indent_style#K.26R_style)风格,因为可能的“;”插入JavaScript代码。 – Oleg 2011-05-16 15:21:01