最近做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;
}