【问题标题】:how to populate a combobox based on the previous combobox selection in XML如何根据 XML 中先前的组合框选择填充组合框
【发布时间】:2012-09-27 19:43:26
【问题描述】:

这个问题与我的previous question 有关,在那里我得到了使用 LINQ 的答案,但我无法理解。有没有其他方法可以在不使用 LINQ 的情况下做到这一点? (我知道 LINQ 是最好的,但我认为初学者不太好开始)

我想根据之前的组合框选择填充一个组合框(cbProductcbBrandName

两个组合框的值都来自相同的XML file

在这里问之前,我已经浏览了很多链接,但答案大多基于 LINQ,或者与 xml 无关。

我尝试了以下代码:(它只是分配值)

           DataSet dsBill = new DataSet();
           dsBill.ReadXml(@"..\..\stock.xml");
 /*ERROR*/ cbProduct.DataSource = dsBill.Tables[0].DefaultView.ToTable(true, "productname"); 
           cbProduct.DisplayMember = "productname";

还有一个问题,当我没有将 name 属性分配给 xml 文件时,此代码正在工作,现在它显示错误 - “列 'productname' 不属于基础表 'items'。"

请帮忙
提前致谢。

【问题讨论】:

  • 你能改变 XML 的格式吗?

标签: c# xml c#-4.0 combobox dataset


【解决方案1】:

关于添加name 属性的问题,我认为你只是没有更新你的代码来支持它。试试这个:

       DataSet dsBill = new DataSet();
       dsBill.ReadXml(@"..\..\stock.xml");
       cbProduct.DataSource = dsBill.Tables[0].DefaultView.ToTable(true, "Product name"); 
       cbProduct.DisplayMember = "Product name";

【讨论】:

  • 感谢您的回复。 aaa有什么区别?无论如何,我尝试了您的代码仍然显示相同的错误。 xml 文件附加到我的项目中,因此它会自动更新。
  • 我刚刚将productname 更改为Product name,因为我认为(错误地出现)它失败的原因是因为名称属性覆盖了旧名称。
  • 实际上name 属性的值为“产品名称”。如果您有任何建议或努力,请随时分享:)
  • 根据其他答案,这确实是 LINQ 的工作。基本 LINQ 并不难,即使对于初学者也是如此。语法很奇怪,但你不需要理解它就可以使用它。我会在第一个问题的答案中添加评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-01
相关资源
最近更新 更多