2013-11-03 116 views
0

我將數據動態綁定到數據網格,但不顯示數據。它給了我這五列:RowError,RowState,table,ItemArray和HasError。動態綁定數據網格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

你有點混合動態和靜態綁定。您應該從後面的代碼中刪除XAML中的ItemsSource="{Binding ds}"DataGrid1.DataContext = ds.DefaultViewManager,因爲您正在從後面的代碼與ItemsSource進行通信。

2

綁定ItemsSourceDataView而不是DataTable。你可以用以下提到的兩種方法中的數據視圖獲取 -

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

或使用擴展方法AsDataView -

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