首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法通过UWP中的System.Data.DataTable对象分配CollectionViewSource.Source

无法通过UWP中的System.Data.DataTable对象分配CollectionViewSource.Source
EN

Stack Overflow用户
提问于 2021-05-01 16:45:07
回答 1查看 78关注 0票数 1

日安。

我正在尝试在Microsoft.Toolkit.Uwp.UI.Controls.DataGrid中显示来自System.Data.DataTable的数据。我通过CollectionViewSource将组件绑定到表。

在UWP下,不能使用Windows.UI.Xaml.Data.CollectionViewSource对象。

无法按System.Data.DataTable对象分配CollectionViewSource.Source。

尝试赋值时,抛出错误:

System.ArgumentException:‘值不在预期范围内。’

下面是一些示例代码:

代码语言:javascript
复制
private void Button_Click(object sender, RoutedEventArgs e)
{
   System.Data.DataSet northwindDataSet = new DataSet();
   northwindDataSet.ReadXml(@"NorthwindDataSet.Xml");
   System.Data.DataTable dataTable = northwindDataSet.Tables["Customers2"];

  Windows.UI.Xaml.Data.CollectionViewSource viewSource = new CollectionViewSource();
  viewSource.Source = dataTable;
}

在WPF下,类似的代码工作正常,没有错误。

错误是什么。

EN

回答 1

Stack Overflow用户

发布于 2021-05-03 12:36:44

在UWP平台中,恐怕不能将viewSource.Source设置为DataTable。如果您想将DataTable填充到datagrid中,有关更多信息,请参阅此案例reply

代码语言:javascript
复制
private ObservableCollection<object> collection = new ObservableCollection<object>();
public void FillDataGrid(DataTable table, DataGrid grid)
{
    grid.Columns.Clear();
    for (int i = 0; i < table.Columns.Count; i++)
    {
        grid.Columns.Add(new DataGridTextColumn()
        {
            Header = table.Columns[i].ColumnName,
            Binding = new Binding { Path = new PropertyPath("[" + i.ToString() + "]") }
        });
    }

    var collection = new ObservableCollection<object>();
    foreach (DataRow row in table.Rows)
    {
        collection.Add(row.ItemArray);
    }

    grid.ItemsSource = collection;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67344390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档