Отображение горизонтальной таблицы вертикально в 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>
и установите высоту и ширину столбцов соответственно, и он отлично работает. Спасибо !