【问题标题】:When I add data to datagrid in XAML doesn't update当我在 XAML 中将数据添加到数据网格时不会更新
【发布时间】:2013-04-20 19:37:03
【问题描述】:

我无法让我的DataGrid 填充数据。我是 XAML 的新手。我正在使用OracleDataReader 对象并希望将其添加到DataGrid。首先是 XAML:

<DataGrid Name="grdResults" FontSize="25" AutoGenerateColumns="False" CanUserResizeRows="False" DockPanel.Dock="Top" IsReadOnly="True">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Path=extName}" Header="Name"  Width="*" />
        <DataGridTextColumn Binding="{Binding Path=location_note}"  Header="Location" Width="*" />
        <DataGridTextColumn Binding="{Binding Path=crate_no}" Header="Crate" Width="*"/>
    </DataGrid.Columns>
</DataGrid>

这里是幕后。似乎它应该工作,但事实并非如此。这些字段的名称与它们在 XAML 中绑定的名称相同。 RS 是一个已填充的OracleDataReader

Dim dt As New DataTable
dt.Load(rs)
grdResults.DataContext = dt.DefaultView

谁能看出我做错了什么?

编辑:

我能够让它工作。可能不是最好的方法,但对我有用。我从 XAML 中取出 datagrid.columns 和 childs 并将其放在 dt.Load(rs) 和设置 datacontext 之间的幕后

    grdResults.Columns.Add(New DataGridTextColumn() With { _
        .Header = "Name", _
        .Binding = New Binding(String.Format("[{0}]", "extName"))})

    grdResults.Columns.Add(New DataGridTextColumn() With { _
        .Header = "Location", _
        .Binding = New Binding(String.Format("[{0}]", "location_note"))})

    grdResults.Columns.Add(New DataGridTextColumn() With { _
        .Header = "Crate", _
        .Binding = New Binding(String.Format("[{0}]", "crate_no"))})

【问题讨论】:

  • 我完全不鼓励在 WPF 客户端使用 System.Data 类。创建适当的数据模型来保存您的数据和适当的 ViewModel 来定义应用程序逻辑。
  • 但是,如果我有,是否可以在网格中显示它?
  • 当然老兄。 WPF 比 winforms 更强大。我不明白你的问题。
  • 你试过 AutoGenerateColumns = True 吗?
  • 是的,但有些行我不想使用。

标签: wpf vb.net xaml datagrid


【解决方案1】:

实际上,AutoGeneratedColumn = false 你做得对 如果要跳过数据库的某些列,可以先通过设置隐藏所有列 Columns.Item(x).Visibility = Windows.Visibility.Hidden 然后只显示选定的。

要跳过行,您可以从DataView 中删除它们(如果您想这样做,最好创建单独的DataView 以供查看,并提供自定义数据收集方法)

描述了另一种(更好的)禁用单独行的方法here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    相关资源
    最近更新 更多