DataTable縦レコードを横列表示に変換し、動的に列を追加し、データを埋め込む
2775 ワード
DataTable dt = Maticsoft.DBUtility.DbHelperOra.Query(QuerySql).Tables[0];
#region DataTable
DataTable dtShow = new DataTable();
dtShow.Columns.Add(" ", Type.GetType("System.String"));
dtShow.Columns.Add(" ", Type.GetType("System.String"));
dtShow.Columns.Add(" ", Type.GetType("System.String"));
dtShow.Columns.Add(" ", Type.GetType("System.String"));
dtShow.Columns.Add(" ", Type.GetType("System.String"));
dtShow.Columns.Add(" ", Type.GetType("System.String"));
dtShow.Columns.Add(" ", Type.GetType("System.String"));
dtShow.Columns.Add(" ", Type.GetType("System.String"));
//
DataTable dtCover = GetCoverItemDT();
if (dtCover.Rows.Count > 0)
{
for (int i = 0; i < dtCover.Rows.Count; i++)
{
dtShow.Columns.Add(dtCover.Rows[i]["ITEMNAME"].ToString(), Type.GetType("System.String"));
}
}
#endregion
#region dtShow
int p = 1; //
for (int n = 0; n < dt.Rows.Count; n++)
{
string EMPLOYEEID = dt.Rows[n]["EMPLOYEEID"].ToString();
//
string CompareEMPLOYEEID = (n == dt.Rows.Count - 1) ? "000000" : dt.Rows[n + 1]["EMPLOYEEID"].ToString();
if (CompareEMPLOYEEID != EMPLOYEEID) // ID ID
{
DataRow dr = dtShow.NewRow();
dr[" "] = p;
dr[" "] = dt.Rows[n]["EMPLOYDEP"];
dr[" "] = dt.Rows[n]["EMPLOYEEID"];
dr[" "] = dt.Rows[n]["EMPLOYEENAME"];
dr[" "] = dt.Rows[n]["POST"];
dr[" "] = dt.Rows[n]["CYCLENAME"];
dr[" "] = dt.Rows[n]["CYCLESTARTDATE"];
dr[" "] = dt.Rows[n]["CYCLEENDDATE"];
for (int j = 0; j < dtShow.Columns.Count; j++)
{
DataRow[] dr1 = dt.Select("EMPLOYEEID='" + EMPLOYEEID + "' AND ITEMNAME='" + dtShow.Columns[j].ColumnName + "'");
if (dr1.Length > 0)
{
dr[dtShow.Columns[j].ColumnName] = dr1[0]["AMOUNT"].ToString();
}
}
dtShow.Rows.Add(dr);
p++;
}
}
#endregion