0

我有一个小要求,那就是:

表单上有两个组合框,用于填充员工姓名和角色。我正在填充组合框,如下所示:

  1. 我创建了一个名为“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  
    
  2. 设计了一个带有两个组合框的表单,并将数据填充到其中:

    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  
    

数据被正确填充到组合框中,我的要求是当我从第一个组合中选择和员工时,他的相应角色应该在第二个组合中被选中。

任何人,请帮我解决这个要求。

问候,
乔治

4

1 回答 1

0

您需要添加绑定源和数据关系才能使其正常工作。考虑这个演练,它适用于 datagridviews,但概念是相同的。

我做了一个快速模型来给你一个想法。请记住,“EmpTable”是您分配给数据表的名称,“EmpColumn”是父列,同样将相同的逻辑应用于 Roles 表。代码的关键更改是两个表必须位于具有 datarelationship 的同一数据集中

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

祝你好运。

于 2010-09-11T05:41:03.077 回答