在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
})
},
实际效果如下: