【问题标题】:Unable to assign CollectionViewSource.Source by System.Data.DataTable object in UWP无法通过 UWP 中的 System.Data.DataTable 对象分配 CollectionViewSource.Source
【发布时间】:2021-05-01 08:45:07
【问题描述】:

美好的一天。

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

在 UWP 下,无法使用 Windows.UI.Xaml.Data.CollectionViewSource 对象。

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

尝试赋值时,抛出错误:

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

这里有一些示例代码:

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 下,类似的代码可以正常工作,没有错误。

错误是什么。

【问题讨论】:

  • 此线程有任何更新吗?

标签: c# uwp datatable collectionviewsource


【解决方案1】:

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

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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-05
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多