我正在动态地将数据绑定到数据网格,但它不显示数据。它给了我这五列:RowError,RowState,table,ItemArray和HasError。
但是行数是正确的,它给出的数量和我在数据库中的行数一样。
这是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>
如何解决这个问题?它如何动态地将数据集绑定到数据网格?
答案 0 :(得分:2)
将ItemsSource
与DataView
绑定,而不是DataTable
。您可以使用以下任一方法获取DataView -
DataGrid1.ItemsSource = ds.Tables("a").DefaultView;
或使用扩展方法AsDataView
-
DataGrid1.ItemsSource = ds.Tables("a").AsDataView();
答案 1 :(得分:0)
你有点混合动态和静态绑定。当你从后面的代码与ItemsSource进行通信时,你应该从XAML和ItemsSource="{Binding ds}"
中移除DataGrid1.DataContext = ds.DefaultViewManager
。