一种不用自定义datagrid的方法。
通过将datagrid栅格矩阵转置,尽管不是解决的最佳方案 ,但对于显示单条数据还是不错的。
code:
private
void
BindData()
... {
DataSet ds = this.GetDetail();
... {
DataSet ds = this.GetDetail();
DataSet new_ds = FlipDataSet(ds);
DataView my_DataView = new_ds.Tables[0].DefaultView;
this.my_DataGrid.DataSource = my_DataView;
this.my_DataGrid.DataBind();
}
public DataSet FlipDataSet(DataSet my_DataSet)
... {
DataSet ds = new DataSet();
foreach(DataTable dt in my_DataSet.Tables)
...{
DataTable table = new DataTable();
for(int i=0; i<=dt.Rows.Count; i++)
...{
table.Columns.Add(Convert.ToString(i));
}
DataRow r;
for(int k=0; k<dt.Columns.Count; k++)
...{
r = table.NewRow();
r[0] = dt.Columns[k].ToString();
for(int j=1; j<=dt.Rows.Count; j++)
r[j] = dt.Rows[j-1][k];
}
table.Rows.Add(r);
}
ds.Tables.Add(table);
}
return ds;
}
this.my_DataGrid.DataSource = my_DataView;
this.my_DataGrid.DataBind();
}
public DataSet FlipDataSet(DataSet my_DataSet)
... {
DataSet ds = new DataSet();
foreach(DataTable dt in my_DataSet.Tables)
...{
DataTable table = new DataTable();
for(int i=0; i<=dt.Rows.Count; i++)
...{
table.Columns.Add(Convert.ToString(i));
}
DataRow r;
for(int k=0; k<dt.Columns.Count; k++)
...{
r = table.NewRow();
r[0] = dt.Columns[k].ToString();
for(int j=1; j<=dt.Rows.Count; j++)
r[j] = dt.Rows[j-1][k];
}
table.Rows.Add(r);
}
ds.Tables.Add(table);
}
return ds;
}
如果数据很多,建议用其他的实现方式。