【问题标题】:How to get all values of a column in WPF?如何获取WPF中列的所有值?
【发布时间】:2021-01-23 07:23:23
【问题描述】:

我有这个DataGrid

我这样从 SQL 中获取数据:

SqlDataAdapter dataAdapter = new SqlDataAdapter(command);
DataTable dt = new DataTable();
dataAdapter.Fill(dt);
Datagrid.ItemsSource = dt.DefaultView;

如何从DataGrid 中获取“ParaXML”列的所有值?

提前致谢。

【问题讨论】:

  • 首先,如何将值放入 Datagrid 中?
  • 值来自数据库。我必须检查此列的每个值。
  • @loris02 请显示您在哪里定义和分配您设置为ItemsSource的集合。
  • 那么你应该稍微不同的想法来做这件事。与其加载数据库然后检查数据,不如创建一个包含一行数据的对象(我们称之为“对象”为例)。将您的数据放入对象列表 (List) 并将此列表绑定到 DataGrid。这必须与您所做的工作相同,但它还允许您在数据显示之前检查、修改、格式化和执行许多其他操作。
  • @thatguy 我就是这样做的: SqlDataAdapter dataAdapter = new SqlDataAdapter(command);数据表 dt = 新数据表(); dataAdapter.Fill(dt); Datagrid.ItemsSource = dt.DefaultView;

标签: c# wpf datagrid


【解决方案1】:

这些值来自数据库。我必须检查此列的每个值

不要尝试从DataGrid 获取所有列值,而是直接在您的代码中访问DataTable。由于您没有提供这方面的信息,我假设列数据类型为string,列 ID 为ParaXML。如果您的代码不同,请修改以下示例。

foreach(DataRow row in dt.Rows)
{
   var columnValue = (string)row["ParaXML"];
   // ...do something with the column value.
}

如果您想将所有列值作为一个列表获取,您可以像上面那样循环或using Linq.

var paraXmls = new List<string>();
foreach(DataRow row in dt.Rows)
   paraXMLs.Add((string)row["ParaXML"]);
var paraXmls = dt.AsEnumerable().Select(row => row.Field<string>("ParaXML")).ToList();

【讨论】:

  • 是否可以从 DataGrid 中检查该列的每个单元格?因为我将值放入 DataGrid 进行编辑。
  • @loris02 你能澄清一下你要达到什么目标吗? paraXML 变量包含 ParaXML 列中的每个值,或者换句话说,该 DataGrid 列中单元格的所有值。您想从DataGrid 和何时检查什么?
  • 这就是问题所在。我从数据库中获取DataGrid 中的值。我的程序将检查“ParaXML”列的这些值是否已经存在于另一个数据库中。用户还可以在DataGrid 中更改这些值,所以我必须在那里而不是直接在 DataTable 中检查它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-10
  • 1970-01-01
  • 1970-01-01
  • 2013-04-17
  • 2018-12-09
  • 1970-01-01
相关资源
最近更新 更多