Display a horizontal table vertically in a Datagrid-WPF
c#, sql-server, wpf, wpfdatagrid
Solution
At first I tried rotating my Table in my DB using Pivot table, but couldn't succeed..
then I found to set the datagrid.layouttransform and a datagrid.Cellstyle for rotating the view of the table.
<DataGrid.LayoutTransform>
<TransformGroup>
<RotateTransform Angle="90"/>
<MatrixTransform Matrix="-1,0,0,1,0,0"/>
</TransformGroup>
</DataGrid.LayoutTransform>
<DataGrid.ColumnHeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource {x:Type DataGridColumnHeader}}">
<Setter Property="LayoutTransform">
<Setter.Value>
<TransformGroup>
<RotateTransform Angle="-90"/>
<ScaleTransform ScaleX="1" ScaleY="-1" />
</TransformGroup>
</Setter.Value>
</Setter>
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="LayoutTransform">
<Setter.Value>
<TransformGroup>
<RotateTransform Angle="-90"/>
<ScaleTransform ScaleX="1" ScaleY="-1" />
</TransformGroup>
</Setter.Value>
</Setter>
</Style>
</DataGrid.CellStyle>
and set the height and width of the columns accordingly and it works fine. Thanks !
Problem
I have a table displayed from a database. I would like to display the horizontal Header Column-> Vertically My table Structure is ``` Server|Role|Status|Date ``` but I would like to display as ``` Server Role Status Date ``` I tried the to flip the dataset, and tried to build it. Initially the build was successful but I can't view any data on my datagrid. kindly help , is there any other way to approach this problem ? here is my code snippet ``` SqlConnection con; SqlDataAdapter da = null; DataSet ds = null; private void Page_Loaded(object sender, RoutedEventArgs e) { try { da = new SqlDataAdapter("Select * from [ServerDB_Test].[dbo].[ServerStatus] ", con); 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); } da.Fill(ds); dataGrid1.ItemsSource = ds.Tables[1].DefaultView; } catch (Exception ex) { Console.WriteLine(ex.Message); } } ``` Thanks