0

我将数据动态绑定到数据网格,但它不显示数据。它给了我这五列: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>

如何解决这个问题呢?它如何动态地将数据集绑定到数据网格?

4

2 回答 2

2

ItemsSourceDataView而不是绑定DataTable。您可以使用下面提到的任何一种方法获取 DataView -

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

或使用扩展方法AsDataView-

DataGrid1.ItemsSource = ds.Tables("a").AsDataView();
于 2013-11-03T08:51:17.197 回答
0

你有点混合动态和静态绑定。当您从后面的代码与 ItemsSource 通信时,您应该ItemsSource="{Binding ds}"从 XAML 和 DataGrid1.DataContext = ds.DefaultViewManager后面的代码中删除。

于 2013-11-03T08:38:05.837 回答