【问题标题】:Dynamically binding a datagrid WPF动态绑定数据网格 WPF
【发布时间】:2013-11-14 01:42:15
【问题描述】:

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

如何解决这个问题?如何将数据集动态绑定到datagrid?

【问题讨论】:

    标签: wpf vb.net xaml datagrid


    【解决方案1】:

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

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

    或者使用扩展方法AsDataView -

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

    【讨论】:

      【解决方案2】:

      您有点混合了动态和静态绑定。您应该从 XAML 中删除 ItemsSource="{Binding ds}" 并从后面的代码中删除 DataGrid1.DataContext = ds.DefaultViewManager,因为您正在从后面的代码中与 ItemsSource 进行通信。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-28
        • 2010-11-15
        • 1970-01-01
        • 2013-04-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多