我有一个小要求,那就是:
表单上有两个组合框,用于填充员工姓名和角色。我按如下方式填充组合框:
-
我创建了一个名为“DbConnect”的类,其中有 02 个函数:
Public Function getEmployees() As DataTable
Dim employeeDS As New DataSet
Dim employeeDA As New SqlDataAdapter("prc_emp_list", conn)
employeeDA.Fill(employeeDS, "employees")
Return employeeDS.Tables("employees")
End Function
Public Function getRoles() As DataTable
Dim roleDS As New DataSet
Dim roleDA As New SqlDataAdapter("prc_role_list", conn)
roleDA.Fill(roleDS, "roles")
Return roleDS.Tables("roles")
End Function
-
设计了一个带有两个组合框的表单,并将数据填充到其中:
Public Sub employees()
accessFunction.Open()
cboEmployees.DataSource = accessFunction.getEmployees
cboEmployees.DisplayMember = "emp_name"
cboEmployees.ValueMember = "login_id"
End Sub
Public Sub roles()
accessFunction.Open()
cboRoles.DataSource = accessFunction.getRoles
cboRoles.DisplayMember = "role_name"
cboRoles.ValueMember = "role_id"
End Sub
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
employees()
roles()
End Sub
数据已正确填充到组合框中,我的要求是,当我从第一个组合中选择员工时,应在第二个组合中选择他相应的角色。
任何人,请帮我解决这个要求。
Regards,
乔治
您需要添加绑定源和数据关系才能使其正常工作。考虑一下这个走过 http://msdn.microsoft.com/en-us/library/y8c0cxey.aspx,它适用于 datagridviews,但概念是相同的。
我做了一个快速的模型来给你一个想法。请记住,“EmpTable”是您分配给数据表的名称,“EmpColumn”是父列,类似地对 Roles 表应用相同的逻辑。对您的代码的关键更改是两个表必须位于具有数据关系的同一数据集中.
Dim dtEmp as Datatable
Dim dtRole as Datatable
''//fill tables here
Dim ds as New Dataset()
ds.Tables.add(dtRole)
ds.Tables.add(dtEmp)
Dim dr as New DataRelation( _
ds.Tables("EmpTable").Columns("EmpColumn"),
ds.Tables("RoleTable").Columns("RoleColumn"))
''//create binding sources
Dim bsEmp as New BindingSource
Dim bsRole as New BindingSource
bsEmp.Datasource = ds
bsEmp.DataMember = "EmpTable"
bsRole.Datasource = bsEmp
bsRole.DataMeber = "RoleTable"
''//bind the binding sources to the appropriate comboboxes
cboEmployee.Datasource = bsEmp
cboRole.Datasource = bsRole
祝你好运。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)