在WPF中的Datagrid中将水平表格垂直显示

10

我有一张从数据库中显示的表格。 我想将水平的表头列垂直地显示。

我的表格结构如下:

  Server|Role|Status|Date

但是我希望显示为

  Server
  Role
  Status
  Date

我尝试翻转数据集并构建它。最初构建成功,但我无法在数据网格中查看任何数据。

请帮忙,是否有其他方法来解决这个问题?

以下是我的代码片段:

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


1
是的,你说得对。我看到一个空的数据网格。 但是当我尝试添加da.Fill(ds);时, 在构建过程中出现了错误。 让我尝试一下你在最后一句中给出的选项,然后告诉你。 - Indhi
你到底遇到了什么错误?如果你不执行Fill操作,就不可能得到任何输出... - techBeginner
可能您的查询没有数据... - techBeginner
如果这个解决方案对你有用,请发布你的答案。 - techBeginner
我看到一条消息 - 在当前上下文中不存在“Fill”名称。 - Indhi
显示剩余4条评论
1个回答

17

起初我尝试使用数据透视表旋转我的数据库中的表格,但是没有成功。

后来我发现可以设置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>

设置列的高度和宽度,然后它就能正常工作了。 谢谢!


太好了,它对你有帮助! - Indhi
1
非常感谢。我已经成功旋转了列,但是无法保持文本垂直。你的帮助非常大。 - Kadaj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接