核心代码:
public void ProductSummarySubtotal(DataTable dt)
{
for (int i = dt.Rows.Count - 1; i > 0; i--)
{
//品牌小计
if (i == dt.Rows.Count - 1 || dt.Rows[i]["品牌"].ToString() != dt.Rows[i + 1]["品牌"].ToString())
{
string filter = " 品牌 NOT LIKE '%小计' and 品牌='" + dt.Rows[i]["品牌"].ToString() + "'";
DataRow dr = dt.NewRow();
dr["品牌"] = "品牌小计";
dr["品线"] = " ";
dr["品类"] = " ";
dr["品名"] = " ";
dr["GMV"] = dt.Compute("SUM(GMV)", filter);
//...........
dr["利润率"] = (decimal.Parse(dr["退货后收入"].ToString()) == 0) ? 0 : Math.Round(decimal.Parse(dr["利润"].ToString()) * 100 / decimal.Parse(dr["退货后收入"].ToString()), 2);
dt.Rows.InsertAt(dr, i + 1);//插入一行
}
//品线小计
if (i == dt.Rows.Count - 1 || dt.Rows[i]["品线"].ToString() != dt.Rows[i + 1]["品线"].ToString())
{
string filter = " 品牌 NOT LIKE '%小计' and 品牌='" + dt.Rows[i]["品牌"].ToString() + "' and 品线='" + dt.Rows[i]["品线"].ToString() + "'";
DataRow dr = dt.NewRow();
dr["品牌"] = "品线小计";
dr["品线"] = " ";
dr["品类"] = " ";
dr["品名"] = " ";
dr["GMV"] = dt.Compute("SUM(GMV)", filter);
//..............
dr["利润率"] = (decimal.Parse(dr["退货后收入"].ToString()) == 0) ? 0 : Math.Round(decimal.Parse(dr["利润"].ToString()) * 100 / decimal.Parse(dr["退货后收入"].ToString()), 2);
dt.Rows.InsertAt(dr, i + 1);//插入一行
}
//品类小计
if (i == dt.Rows.Count - 1 || dt.Rows[i]["品类"].ToString() != dt.Rows[i + 1]["品类"].ToString())
{
string filter = " 品牌 NOT LIKE '%小计' and 品牌='" + dt.Rows[i]["品牌"].ToString() + "' and 品线='" + dt.Rows[i]["品线"].ToString() + "' and 品类='" + dt.Rows[i]["品类"].ToString() + "'";
DataRow dr = dt.NewRow();
dr["品牌"] = "品类小计";
dr["品线"] = " ";
dr["品类"] = " ";
dr["品名"] = " ";
dr["GMV"] = dt.Compute("SUM(GMV)", filter);
//....................
dr["利润率"] = (decimal.Parse(dr["退货后收入"].ToString()) == 0) ? 0 : Math.Round(decimal.Parse(dr["利润"].ToString()) * 100 / decimal.Parse(dr["退货后收入"].ToString()), 2);
dt.Rows.InsertAt(dr, i + 1);//插入一行
}
}
}
调用此方法:
DataTable dt = pro.ProductSummaryDate(startDate, Company, ShopID, Brand, ProductLine, ProductClass, ProductName);
ProductSummarySubtotal(dt);//小计
return dt;
html部分:
$("#tbody").empty();
$.getJSON("/Controller/action",
{
"startDate": startDate,
"company": company.toString(),
"shop": shop.toString(),
"brand": brand.toString(),
"line": line.toString(),
"Class": Class.toString(),
"ProductName": productName,
},
function (result) {
$.each(result, function (i, field) {
var html = "";
if (field.品牌 == "合计") {
html += "<tr style='background-color:yellow;'>";
}
else {
html += "<tr>";
}
if (field.品牌 == "品牌小计") {
html += "<td colspan='2'>" + field.品牌 + "</td>";
html += "<td></td>";
html += "<td>" + field.品名 + "</td>";
}
else if (field.品牌 == "品线小计") {
html += "<td></td>";
html += "<td colspan='2'>" + field.品牌 + "</td>";
html += "<td>" + field.品名 + "</td>";
}
else if (field.品牌 == "品类小计") {
html += "<td></td>";
html += "<td></td>";
html += "<td colspan='2'>" + field.品牌 + "</td>";
//html += "<td>" + field.品名 + "</td>";
}
else {
html += "<td>" + field.品牌 + "</td>";
html += "<td>" + field.品线 + "</td>";
html += "<td>" + field.品类 + "</td>";
html += "<td>" + field.品名 + "</td>";
}
html += "<td>" + field.GMV + "</td>";
//...........................
html += "<td>" + ($.trim(field.利润率) == "" ? "0" : field.利润率) + "%</td>";
html += "</tr>";
//添加到table
$("#tbody").append(html);
});
});
大概这个意思:
嗯嗯....