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