Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Datagrid WPF中垂直显示水平表_C#_Sql Server_Wpf_Wpfdatagrid - Fatal编程技术网

C# 在Datagrid WPF中垂直显示水平表

C# 在Datagrid WPF中垂直显示水平表,c#,sql-server,wpf,wpfdatagrid,C#,Sql Server,Wpf,Wpfdatagrid,我有一个从数据库显示的表。 我想显示水平标题列->垂直 我的桌子结构是 Server|Role|Status|Date 但我想显示为 Server Role Status Date 我尝试翻转数据集,并尝试构建它。最初构建成功,但我无法查看datagrid上的任何数据。 请帮忙,还有其他方法解决这个问题吗 这是我的代码片段 SqlConnection con; SqlDataAdapter da = null; DataSet ds = null; private vo

我有一个从数据库显示的表。 我想显示水平标题列->垂直

我的桌子结构是

  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);
   }
}
SqlConnection-con;
SqlDataAdapter da=null;
数据集ds=null;
已加载私有无效页面(对象发送方,路由目标e)
{
尝试
{
da=新的SqlDataAdapter(“从[ServerDB_测试].[dbo].[ServerStatus]”中选择*,con);
ds=新数据集();
foreach(my_DataSet.Tables中的数据表dt)
{
DataTable=新的DataTable();

对于(int i=0;i,起初我尝试使用Pivot Table在数据库中旋转我的表,但没有成功

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

并相应地设置柱的高度和宽度,这样效果很好。
谢谢!

如果我没有错的话,你一定看到了一个空的dataGrid,对吗?因为我看到没有提取数据,并且没有调用
da.fill
方法。如果你纠正了这一点,我看到的另一个问题是,在做了所有的转置逻辑之后,你再次将原始datatable馈送到
dataGrid1
更改它
ds.Tables[1]
而不是
ds.Tables[0]
是的,没错。我看到一个空的数据网格。但是当我尝试添加da.Fill(ds)时;构建过程中有错误。让我试试你在最后一句中给出的选项,让你知道你到底得到了什么错误?如果你不进行
填充
,你就无法获得一些输出…我编辑了上面的代码并添加了da.Fill(ds);我将索引改为1。现在,当我调试时,我看到了列标题,但带有空白的datagrid:-(可能没有用于查询的数据…太好了,它帮助了你!非常感谢。我可以旋转列,但不能保持文本垂直。你帮了我很大的忙。