2013-11-03 2 views
0

데이터를 DataGrid에 동적으로 바인딩하지만 데이터를 표시하지 않습니다. RowError, RowState, table, ItemArray 및 HasError라는 다섯 개의 열을 제공합니다.동적으로 DataGrid 바인딩 WPF

하지만 행 수는 정확합니다. 데이터베이스에있는 것과 같은 행 수를 제공합니다.

이것은 VB 코드 :

Dim con As New OdbcConnection("dsn=PAUSPAN") 
con.Open() 
Dim cmd As New OdbcCommand("select * from tbl_chart", con) 

Dim da As New OdbcDataAdapter(cmd) 
'Dim dt As New DataTable("a") 
Dim ds As New DataSet() 
ds.Tables.Add("a") 

da.Fill(ds, "a") 
MsgBox(ds.Tables("a").Rows.Count.ToString) 

DataGrid1.ItemsSource = ds.Tables("a").AsEnumerable.ToList() 
'DataGrid1.DataContext = ds.DefaultViewManager 

con.Close() 

그리고 이것은 XAML 코드 :

<Window x:Class="datagrid" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"   
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="datagrid" Height="344" Width="599"> 
    <Grid> 
     <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="486,225,0,0" Name="Button1" 
       VerticalAlignment="Top" Width="75" /> 
     <DataGrid Height="241" HorizontalAlignment="Left" 
        Margin="12,12,0,0" 
        Name="DataGrid1" VerticalAlignment="Top" 
        Width="386" ItemsSource="{Binding ds}" /> 
    </Grid> 
</Window> 

방법이 문제를 해결하기 위해? 어떻게 데이터 집합을 동적으로 DataGrid에 바인딩합니까?

답변

0

동적 바인딩과 정적 바인딩이 약간 섞여 있습니다. 코드 숨김에서 ItemsSource와 통신 할 때 XAML에서 ItemsSource="{Binding ds}"을 제거하고 DataGrid1.DataContext = ds.DefaultViewManager을 코드에서 제거해야합니다.

2

바인드 ItemsSourceDataView 대신 DataTable. 당신은 아래에 언급 된 방법 중 하나를 사용하여 DataView를 얻을 수 있습니다 -

DataGrid1.ItemsSource = ds.Tables("a").DefaultView; 

또는 사용 확장 메서드 AsDataView -

DataGrid1.ItemsSource = ds.Tables("a").AsDataView(); 
관련 문제