Отображение горизонтальной таблицы вертикально в Datagrid-WPF

у меня есть таблица отображается из базы данных. Я хотел бы отобразить горизонтальный столбец заголовка - > вертикально

моя структура таблицы

  Server|Role|Status|Date

но я хотел бы отобразить как

  Server
  Role
  Status
  Date

Я попытался перевернуть набор данных и попытался его построить. Первоначально сборка была успешной, но я не могу просмотреть данные на своем datagrid. пожалуйста, помогите , есть ли другой способ решить эту проблему ?

вот мой фрагмент кода

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);
   }
}

спасибо

1 ответов


сначала я попытался повернуть таблицу в своей БД с помощью сводной таблицы,но не смог..

затем я нашел, чтобы установить datagrid.layouttransform и datagrid.Cellstyle для поворота представления таблицы.

         <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>

и установите высоту и ширину столбцов соответственно, и он отлично работает. Спасибо !