【问题标题】:Unable to display data in a WPF datagrid that has a DataView instance as the items source无法在将 DataView 实例作为项目源的 WPF 数据网格中显示数据
【发布时间】:2011-02-23 06:42:36
【问题描述】:

我正在使用 WPF 工具包中的 DataGrid 对象。我将 DataGrid 对象绑定到 DataTable 实例的默认视图,如下代码中所述:

WeatherGrid.ItemsSource = weatherDataTable.DefaultView;

weatherDataTable 有三列。第一列定义为包含字符串数据类型。其他两列被定义为包含双精度数据类型。当应用程序退出调用在声明中表达的绑定的函数时,DataGrid 对象显示第一列的数据,但不显示其他列的数据。当我在调试器的即时窗口中键入以下内容时:

((DataRowView)WeatherGrid.Items[0]).Row[1]

我得到一个数字,但这与显示的内容不符。为什么只有第一列可见,如何才能使所有数据可见?我将在下面保留 DataGrid 对象的 XAML 定义:

<toolkit:DataGrid Margin="12.726,77.71,12,0" Name="WeatherGrid" Height="500" Grid.Row="1" VerticalAlignment="Top" CanUserAddRows="False" CanUserDeleteRows="False" IsReadOnly="True" />

【问题讨论】:

    标签: c# wpf wpftoolkit binding wpfdatagrid


    【解决方案1】:

    实际上,列绑定名称区分大小写,并且必须与底层数据视图列名称完全匹配。

    【讨论】:

      【解决方案2】:

      事实证明,对于我的第二列和第三列,我一直在使用不正当的列名。我最终希望我的 DataTable 是动态的,因为它可以有可变数量的列,并且我想按日期唯一标识每一列。所以,我附加了两个字符串,一个带有名称,一个带有由“/”分隔的数字。这似乎导致了一些与 DataGrid 对象的绑定问题。

      为了解决这个问题,我把唯一标识日期的字符串改成了年份和年份的数字。结果,我能够显示数据。

      有趣的是,在 ASP.NET 中绑定到 GridView 时,在 DataTable 列名中使用斜杠时不会出现此类问题。

      【讨论】:

      • 我遇到了同样的问题。原来是列名中的小数(即“.”字符)。
      猜你喜欢
      • 1970-01-01
      • 2021-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-18
      相关资源
      最近更新 更多