2012-08-06 63 views
10

将列表绑定到组合框后,其dataSource.Count为5,但是组合框项目数为0. 它怎么可能?组合框项目为空但数据源完全为

我习惯了Web编程,这是在Windows窗体中。 因此没有combo.DataBind();方法存在。

这里的问题是,我试图以编程方式设置选定的项目。由于我没有看到combo.Items集合已填充,因此无法设置所需的项目。


更新

共更新需要我想:

  • 数据源包含7项
  • 当结合到组合框,DisplayMemberValueMember被适当地实现
  • 数据绑定后,通过GUI,我可以清楚地看到在下拉列表
  • combobox.DataSource.Count = 7combobox.Items.Count = 0

所以,问题是这里的7个项目;因为在数据绑定之后,组合框的ItemCollection中没有项目;我无法搜索匹配并设置适当的一个。

这里是更好地了解图像(但我敢肯定,我失去了一些较为简单)

screenshot

+1

你是否相应地设置了'DataTextField'和'DataValueField'? – 2012-08-06 14:22:21

+0

或'DisplayMember'和'ValueMember'。 DataSource中的数据类型是什么? – Mr47 2012-08-06 14:29:38

+0

是的,也许这个问题是不完全可以理解的。数据绑定事件成功,我可以通过gui在组合中看到我的物品。问题在于,在调试中;数据源分配后,组合框不包含Items集合中的某些内容。就像渲染之后,所有的项目都显示出来,但在那之前什么都没有。 – 2012-08-06 20:28:55

回答

21

BindingSource分配之前添加ddl.BindingContext = new BindingContext();后,一切正常。

+0

不适用于我... – 2014-06-15 12:02:12

+1

第一次使用数据源时,一切正常。只要您第二次使用数据源,您还需要重新使用bindingcontext或创建一个新的,就像您一样。 – Norman 2016-01-22 11:09:58

1

如果您要在debuger中展开DataSource项目,您可能会注意到列表中的第一个元素为null。这就是DataSource不显示组合框项目的原因。从列表中删除空项目应该做所有的工作;