C# DataTable数据增加小计合计列
生活随笔
收集整理的這篇文章主要介紹了
C# DataTable数据增加小计合计列
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
/// <summary>
/// 分類(lèi)小計(jì),并有合計(jì)行
/// </summary>
/// <param name="dt"></param>
/// <param name="sColHeJi">顯示合計(jì)小計(jì)的字段</param>
/// <param name="nColHeJi">需要顯示‘合計(jì)’字段的列</param>
/// <param name="colsHeJi">需要合計(jì)的列</param>
public DataRow dbDataTableSubSumRowsWithColList(DataTable dt, string sColHeJi, string[] colsGroup, string[] colsHeJi)
{
DataRow dr = dt.NewRow();
dr[sColHeJi] = "合計(jì)";
dt.Rows.Add(dr);
//初始化合計(jì)數(shù)組
decimal[] arrDec = new decimal[colsHeJi.Length];
for (int i = 0; i < colsHeJi.Length; i++)
{
arrDec[i] = decimal.Zero;
}
//合計(jì)
for (int i = 0; i < dt.Rows.Count - 1; i++)
{
for (int j = 0; j < colsHeJi.Length; j++)
{
string cName = colsHeJi[j];
if (Convert.IsDBNull(dt.Rows[i][cName])) continue;
arrDec[j] += Convert.ToDecimal(dt.Rows[i][cName]);//Tools.toDec(dt.Rows[i][cName] + "");
}
}
for (int i = 0; i < colsHeJi.Length; i++)
{
string cName = colsHeJi[i];
if (arrDec[i] == decimal.Zero) dr[cName] = DBNull.Value;
else dr[cName] = arrDec[i];
}
if (dt.Rows.Count <= 1) return dr;
//小計(jì)
string sRate = "";
int currSubSumCol = dt.Rows.Count - 2;
System.Collections.ArrayList ar = new System.Collections.ArrayList();
for (int i = dt.Rows.Count - 2; i >= 0; i--)
{
string currRate = dt.Rows[i]["belongedProjectTitle"] + "";
if (sRate != currRate)
{
if (i != dt.Rows.Count - 2)
{
dr = dt.NewRow();
dr[sColHeJi] = "小計(jì)";
for (int j = 0; j < colsHeJi.Length; j++)
{
string cName = colsHeJi[j];
if (arrDec[j] == decimal.Zero) dr[cName] = DBNull.Value;
else dr[cName] = arrDec[j];
}
dt.Rows.InsertAt(dr, currSubSumCol + 1);
}
currSubSumCol = i;
sRate = currRate;
for (int j = 0; j < colsHeJi.Length; j++)
{ //歸零
arrDec[j] = decimal.Zero;
}
}
for (int j = 0; j < colsHeJi.Length; j++)
{
string cName = colsHeJi[j];
if (Convert.IsDBNull(dt.Rows[i][cName])) continue;
arrDec[j] += Convert.ToDecimal(dt.Rows[i][cName]);
}
if (i == 0)
{
dr = dt.NewRow();
dr[sColHeJi] = "小計(jì)";
for (int j = 0; j < colsHeJi.Length; j++)
{
string cName = colsHeJi[j];
if (arrDec[j] == decimal.Zero) dr[cName] = DBNull.Value;
else dr[cName] = arrDec[j];
}
dt.Rows.InsertAt(dr, currSubSumCol + 1);
}
}
return dr;
}
再三須慎意,第一莫欺心
總結(jié)
以上是生活随笔為你收集整理的C# DataTable数据增加小计合计列的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Intel 13代i9-13900K多核
- 下一篇: 科研论文提交流程与常见问题(EDAS 系