【发布时间】:2010-04-29 15:07:51
【问题描述】:
到目前为止,学习 LINQ 很有趣,但是尽管阅读了几本书和大量有关该主题的在线资源,但我仍然觉得自己完全是 n00b。最近,我刚刚了解到,如果我的查询返回 Anonymous 类型,我填充的 DataGridView 将是 ReadOnly(因为,显然 Anonymous 类型是 ReadOnly。)
现在,我正在尝试找出最简单的方法:
- 从 XML 文件中获取数据子集到 DataGridView 中,
- 允许用户编辑所述数据,
- 将更改的数据重新粘贴到 XML 文件中。
到目前为止,我已经弄清楚了第 1 步和第 2 步:
public class Container
{
public string Id { get; set; }
public string Barcode { get; set; }
public float Quantity { get; set; }
}
// For use with the Distinct() operator
public class ContainerComparer : IEqualityComparer<Container>
{
public bool Equals(Container x, Container y)
{
return x.Id == y.Id;
}
public int GetHashCode(Container obj)
{
return obj.Id.GetHashCode();
}
}
var barcodes = (from src in xmldoc.Descendants("Container")
where src.Descendants().Count() > 0
select
new Container
{
Id = (string)src.Element("Id"),
Barcode = (string)src.Element("Barcode"),
Quantity = float.Parse((string)src.Element("Quantity").Attribute("value"))
}).Distinct(new ContainerComparer());
dataGridView1.DataSource = barcodes.ToList();
这非常适合从 XML 中获取我想要的数据到 DataGridView 中,以便用户可以操作这些值。
在对我的代码进行逐步跟踪后,我发现对 DataGridView 中的值所做的更改未绑定到 XDocument 对象,因此不会传播回来。
我们如何处理第 3 步? (将数据返回到 XML)是否可以将 XML 直接绑定到 DataGridView?还是我必须编写另一个 LINQ 语句才能将 DGV 中的数据返回到 XDocument?
建议?
【问题讨论】:
标签: c# data-binding datagridview linq-to-xml