asp.net repeater统计表列和值求比率
第一步、统计下图画红框的行列和值,如图:

第二步、统计下图红框的行列和值,如图:

第三步、计算方式:
<asp:Repeater ID="rptList" runat="server">
<HeaderTemplate>
<table id="tbid" width="100%" border="0" cellspacing="0" cellpadding="0" class="border_table">
<thead>
<tr>
<div style="width: 100%; height: 30px; line-height: 30px; border-bottom-color: #F9F9F9; text-align: center;">
<h3>单位名称:<%#new Com.MyTemp.BLL.unit().GetTitle(this.unit_id)%> (统计时间:<%=select_day%>)
</h3>
</div>
</tr>
<tr>
<th width="5%"></th>
<%for (int i = 1; i <= 24; i++)
{ %>
<th><%=i.ToString()%></th>
<%} %>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td align="center"><%#GetEvaluateTypeID(Convert.ToInt32(Eval("evaluate")))%></td>
<td align="center"><%#Eval("totalize_1")%></td>
<td align="center"><%#Eval("totalize_2")%></td>
<td align="center"><%#Eval("totalize_3")%></td>
<td align="center"><%#Eval("totalize_4")%></td>
<td align="center"><%#Eval("totalize_5")%></td>
<td align="center"><%#Eval("totalize_6")%></td>
<td align="center"><%#Eval("totalize_7")%></td>
<td align="center"><%#Eval("totalize_8")%></td>
<td align="center"><%#Eval("totalize_9")%></td>
<td align="center"><%#Eval("totalize_10")%></td>
<td align="center"><%#Eval("totalize_11")%></td>
<td align="center"><%#Eval("totalize_12")%></td>
<td align="center"><%#Eval("totalize_13")%></td>
<td align="center"><%#Eval("totalize_14")%></td>
<td align="center"><%#Eval("totalize_15")%></td>
<td align="center"><%#Eval("totalize_16")%></td>
<td align="center"><%#Eval("totalize_17")%></td>
<td align="center"><%#Eval("totalize_18")%></td>
<td align="center"><%#Eval("totalize_19")%></td>
<td align="center"><%#Eval("totalize_20")%></td>
<td align="center"><%#Eval("totalize_21")%></td>
<td align="center"><%#Eval("totalize_22")%></td>
<td align="center"><%#Eval("totalize_23")%></td>
<td align="center"><%#Eval("totalize_24")%></td>
</tr>
</ItemTemplate>
<FooterTemplate>
<%#rptList.Items.Count == 0 ? "<tr><td align=\"center\" colspan='25'>暂无记录</td></tr>" : "<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>"%>
</thead>
</table>
</FooterTemplate>
</asp:Repeater>
<script type="text/javascript">
var statisticalratio =100- <%=UIConfig.statisticalratio%>
$(document).ready(function () {
$("#tbid tr:last td:eq(0)").html("");
//合计未合格列项和值
var arr2 = ["c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "c10", "c11", "c12", "c13", "c14", "c15", "c16", "c17", "c18", "c19", "c20", "c21", "c22", "c23", "c24"];
var arr = ["t1", "t2", "t3", "t4", "t5", "t6", "t7", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24"];
for (var m = 0; m < arr2.length; m++) {
arr[m] = arr2[m] = 0;
}
$("#tbid tr:gt(4)").not(":last").each(function (i) {
var $obj = $(this).find("td");
for (var n = 1; n <= 24 ; n++) {
var tempVal0 = parseInt($obj.eq(n).html() == null ? 0 : $obj.eq(n).html());
arr2[n - 1] += tempVal0;
}
});
for (var i = 1; i <= 24 ; i++) {
$("#tbid tr:last td:eq(" + i + ")").html(arr2[i - 1]);
}
//合计所有列项和值
$("#tbid tr:gt(0)").not(":last").each(function (i) {
var $obj = $(this).find("td");
for (var j = 1; j <= 24 ; j++) {
var tempVal = parseInt($obj.eq(j).html() == null ? 0 : $obj.eq(j).html());
arr[j - 1] += tempVal;
}
});
for (var i = 1; i <= 24 ; i++) {
var n =$("#tbid tr:last td:eq(" + i + ")").html() / arr[i - 1] * 100;
var str =n <= statisticalratio ? "<span style=\"color:#000;\">正常</span>" : "<span style=\"color:red;\">差</span>";
$("#tbid tr:last td:eq(" + i + ")").html(str);
}
});
function accDiv(arg1, arg2) {
var t1 = 0, t2 = 0, r1, r2;
try {
t1 = arg1.toString().split(".")[1].length
} catch (e) {
}
try {
t2 = arg2.toString().split(".")[1].length
} catch (e) {
}
with (Math) {
r1 = Number(arg1.toString().replace(".", ""))
r2 = Number(arg2.toString().replace(".", ""))
return (r1 / r2) * pow(10, t2 - t1);
}
}
</script>
最终效果如下图:

浙公网安备 33010602011771号