【发布时间】:2011-08-09 19:14:34
【问题描述】:
我正在开发一个内部软件跟踪程序,每个程序修订版都从员工数据库中分配了一个首席程序员。到目前为止,我的简单模型如下所示:
最初我有一个RevisionBindingSource 对象,它绑定到我的Revisions 集合:
Dim container as new EntityContainer
revisionBindingSource.DataSource = container.Revisions
...
dgRevisions.DataSource = revisionBindingSource
dgRevisions.DataMemeber = ""
这很好,我能够绑定到我需要的各种属性,例如应用程序标题:
lblAppTitle.DataBindings.Add("Text",revisionBindingSource,"Application.Title")
但是,我现在需要一个 ComboBox,其项目绑定到员工列表,并且其选定值绑定到当前版本的首席程序员。我尝试创建一个新的employeeBindingSource,但意识到我没有Value 的绑定成员:
employeeBindingSource.DataSource = container.Employees
...
cboLead.DataSource = employeeBindingSource
cboLead.DisplayMember = "Name.Display" 'Name is a complex type'
cboLead.ValueMember = '??
所以我重写了一些绑定,只有一个bindingSource:
bindingSource.DataSource = container
...
dgRevisions.DataSource = bindingSource
dgRevisions.DataMemeber = "Revisions"
...
cboLead.DataSource = bindingSource
cboLead.DisplayMember = "Employees.Name.Display"
cboLead.ValueMember = "Employees"
...
lblAppTitle.DataBindings.Add("Text",bindingSource,"Revisions.Application.Title")
这仍然没有用任何东西填充 ComboBox。
哪种模式更适合我使用 - 两个不同的绑定源,还是一个?我在绑定我的 ComboBox 时做错了什么?一旦我的 ComboBox 被填充,我如何将当前值绑定到修订版的首席程序员?
抱歉这个冗长的问题,谢谢。
【问题讨论】:
-
+1 为您的问题提供了很好的展示
-
您使用的是什么 UI 框架。赢表格?添加标签以获得更好的答案。
-
一些付费控件可以做到这一点(我正在使用 DevExpress,它允许这样做)。您可能会考虑编写一个自定义组合框,该组合框从常规组合框扩展而来并返回您需要的内容。
-
你忘了做这样的事情吗 - cboLead.DataBind()?
标签: winforms entity-framework data-binding ado.net