【问题标题】:Display a List of DataRows in DataGrid在 DataGrid 中显示 DataRows 列表
【发布时间】:2017-01-24 08:01:06
【问题描述】:

我正在尝试在 DataGrid 中显示 ListDataRows,如下所示:

List<DataRow> grid = new List<DataRow>();

for (int i = 0; i <= dt.Rows.Count; i++)
{
    grid.Add(dt.Rows[i]);
}
dataGrid1.ItemsSource = grid;

dt 是一个DataTable,我从那里获取我的数据。 问题是,当我运行代码时,datagrid 是空的。

这也不起作用:

datagrid1.DataContext = grid;

编辑: (xml)

<DataGrid Name="dataGrid1" />

【问题讨论】:

  • 能否分享datagrid1的xaml
  • 如果您在 xaml 中添加 ItemsSource="{Binding}",您的代码将起作用

标签: c# wpf list datagrid datarow


【解决方案1】:

您不需要ListDataRows。你可以简单地:

dataGrid1.ItemsSource = dt.DefaultView;

或者:

dataGrid1.DataContext = dt.DefaultView;

还有:

<DataGrid Name="dataGrid1" ItemsSource="{Binding}">

更新:如果您仍想要ListDataRows

dataGrid1.ItemsSource = dt.AsEnumerable()
                          .Where(grid.Contains)
                          .AsDataView();

你也应该改变这个:

for (int i = 0; i <= dt.Rows.Count; i++)

到这里:

for (int i = 0; i < dt.Rows.Count; i++)

【讨论】:

  • 加个就好了,为什么List&lt;DataRow&gt;不适合绑定
  • @un-lucky 没必要。
  • 稍后我想操作选定行的某些列,这就是为什么我需要 for 循环中的“i”。您的简化方法有效,但对我没有帮助,抱歉
  • @reveN 另外,你应该将 for 循环中的 i &lt;= dt.Rows.Count; 更改为 i &lt; dt.Rows.Count;
  • 将“
【解决方案2】:

请使用 foreach 循环,这样更容易,而且不会出错。

foreach (var row in dt.Rows)
{
    grid.Add(row);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    相关资源
    最近更新 更多