最近做Stacked和分組報表顯示的時候:
需要進行DT的轉置寫一個方法處理如下:
/// <summary> /// DataTable 轉置 以左頂點做軸做轉置 /// </summary> public static DataTable Transpose(DataTable dt_orig,string column) { //建立第一列 DataTable newdt= new DataTable(); newdt.Columns.Add(new System.Data.DataColumn(column, typeof(System.String))); //建立資料列 //第二列開始 //DataTable dt_orig = (DataTable)ViewState["dt_orig"]; for (int i = 0; i < dt_orig.Rows.Count; i++) { string rowname = dt_orig.Rows[i][0].ToString().Trim(); //string colname = dt_orig.Columns[i].ColumnName; //第i+1列名 newdt.Columns.Add(new System.Data.DataColumn(rowname, typeof(System.Decimal))); } //增加資料行 for (int j = 1; j < dt_orig.Columns.Count; j++)//去掉最後一列的類型 { DataRow dr = newdt.NewRow(); dr = newdt.NewRow(); dr[0] = dt_orig.Columns[j].ColumnName.ToString(); for (int k = 1; k <= dt_orig.Rows.Count; k++) { dr[k] = dt_orig.Rows[k - 1][j].ToString(); } newdt.Rows.Add(dr); } return newdt; }