【问题标题】:How to get an Item from an auto-populated DataGrid?如何从自动填充的 DataGrid 中获取项目?
【发布时间】:2011-05-16 00:45:46
【问题描述】:

我有一个自动从 LINQ-To-SQL-Source 提供某些值的 DataGrid。 DataGrid 的标题也是自动生成的。我只想要数据网格中当前选定项目的单元之一。

var a = TestGrid.SelectedCells[0].Item;

如果我对此进行调试,我会得到一个包含我需要的所有值的列表:

TestGrid.SelectedCells[0].Item{ Datum = {11.05.2011 00:00:00}, ID = 3, name = "db",Status = "Ready" }<Anonymous Type>

我完全不知道如何从该匿名类型中选择第二个项目(ID),而谷歌也没有帮助

【问题讨论】:

  • p.s.,当您访问单元格时返回一个匿名对象看起来很奇怪。如果有的话,如果访问一行,你应该得到它。查看您的查询是什么样子会很有帮助。

标签: c# linq-to-sql datagrid cell anonymous-types


【解决方案1】:

最好的选择是创建一个类型来保存您的值并将其存储在 DataGrid 中。如果您仅将其用于显示,则可以使用匿名类型。当您需要将它们用于其他任何事情时,它们并不是那么好。

如果你真的想坚持匿名类型,你唯一的选择就是使用反射。如果这是一个专门的 C# 4.0+ 应用程序,那么使用 dynamic 可以使这更容易一些。

【讨论】:

  • 问题在于,现在我通过以下方式获取数据:var query = search(foo); TestGrid.ItemsSource = query;,搜索结果如上所示。我不是为了方便而使用匿名类型,而是因为我真的不知道如何在没有硬编码/迭代值/标题的情况下将数据放入网格中。
  • @fk2:这是一个 WinForms 应用程序吗? WPF?网络?在 WPF 和 WinForms AFAIK 中,列生成是完全自动的。
  • 好吧,我现在只是简单地创建了一个包含所需字段数量和相关属性的类型。一个地狱打字,但它的工作原理。感谢您的帮助!
猜你喜欢
  • 2021-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-03
  • 1970-01-01
相关资源
最近更新 更多