2012-12-19 2 views
5

데이터베이스에서 테이블을 표시했습니다. I 수직Datagrid-WPF에서 세로 테이블 가로로 표시

내 테이블 구조는

Server|Role|Status|Date 

하지만 I는 I가 세트 플립하도록 시도

Server 
    Role 
    Status 
    Date 

로 표시하고자> 수평 헤더 칼럼 -를 표시하고 싶다 그것을 구축하려고했습니다. 처음에는 빌드가 성공했지만 DataGrid의 데이터는 볼 수 없습니다. 친절하게 도움을주세요. 다른 방법으로이 문제에 접근하고 있습니까? 여기

다음 I가 발견 .. 내 코드

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

감사

처음에는 피벗 테이블을 사용하여 내 DB 내 테이블을 회전 시도에서
+0

내가 잘못하지 않으면 빈 DataGrid를보아야합니다. 맞습니까? 'da.fill' 메쏘드가 호출되지 않았 음을 알기 때문에 당신이 그것을 수정하면, 모든 트랜스 포스 로직을 수행 한 후에 원래의 데이터 테이블을 다시'dataGrid1'에 공급하고있는 것을 볼 수 있습니다. 그것을 변경하십시오'ds.Tables [1]'대신'ds.Tables [0]' – dotNETbeginner

+1

예, 맞아. 빈 DataGrid가 표시됩니다. 하지만 da.Fill (ds)을 추가하려고 할 때; buidling 중에 오류가 있습니다. 마지막 문장에서 지정한 옵션을 시도하고 – user1221765

+0

정확히 어떤 오류가 발생하는지 알고 싶습니다. 'Fill'을하지 않으면 출력을 얻을 방법이 없습니다 ... – dotNETbeginner

답변

11

하지만 성공하지 수 테이블의 뷰를 회전시키기 위해 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> 

그리고 그에 따라 열의 높이와 너비를 설정하면 정상적으로 작동합니다. 감사합니다.

+2

위대한 작품. 나는 이것을 내 Datagrid에 적용했다. – KyloRen

+0

위대한 그것은 당신을 도왔습니다! – user1221765

관련 문제