在grid中,总共有五个评委打分,平均分为得分的平均值,但是如果哪个评委没有打分,则计算平均分时,该评委不算入总人数。
定义列模型中的相关部分如下:
{ header : "平均得分", autoWidth : true, dataIndex : "scoreAve", sortable : true, align: "center", type: "numberfield", renderer: function(value, metadata, record, rowIndex, colIndex, store) { // 计算平均值,如果某一评委未打分,则计算平均分时该评委不计入总人数 var aveValue = 0; var num = 0; if(record.get("scoreOne")) { aveValue += record.get("scoreOne"); num ++; } if(record.get("scoreTwo")) { aveValue += record.get("scoreTwo"); num ++; } if(record.get("scoreThree")) { aveValue += record.get("scoreThree"); num ++; } if(record.get("scoreFour")) { aveValue += record.get("scoreFour"); num ++; } if(record.get("scoreFive")) { aveValue += record.get("scoreFive"); num ++; } if(num != 0) { return parseFloat(aveValue/num).toFixed(2);// 保留两位小数 } else { return "";// num=0表示没有评委进行打分,所以不显示平均分 } } }, { header : "评委一得分", autoWidth : true, dataIndex : "scoreOne", sortable : true, align: "center", editor: new Ext.form.NumberField({ allowNegative: false }) }, { header : "评委二得分", autoWidth : true, dataIndex : "scoreTwo", sortable : true, align: "center", editor: new Ext.form.NumberField({ allowNegative: false }) }, { header : "评委三得分", autoWidth : true, dataIndex : "scoreThree", sortable : true, align: "center", editor: new Ext.form.NumberField({ allowNegative: false }) }, { header : "评委四得分", autoWidth : true, dataIndex : "scoreFour", sortable : true, align: "center", editor: new Ext.form.NumberField({ allowNegative: false }) }, { header : "评委五得分", autoWidth : true, dataIndex : "scoreFive", sortable : true, align: "center", editor: new Ext.form.NumberField({ allowNegative: false }) },
实际效果如下: