Drop Down in VB.NET

北战南征 提交于 2019-12-20 07:24:19

问题


I have a small requirement and that is:

There are two combo boxes on a form and for populating the employee names and roles. I am populating the combo boxes as follows:

  1. I have created a class called "DbConnect" and in that there are 02 functions as:

    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. Have designed a form with two combo boxes and am populating data into them as:

    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  
    

The data is getting populated into the combo boxes correctly and my requirement is that when I select and employee from the first combo, his corresponding role should get selected in the second combo.

Anyone, please help me on this requirement.

Regards,
George


回答1:


You need to add a binding source and a data relationship to get this to work. Consider this walk through, it is for datagridviews but the concept is the same.

I did a quick mock up to give you an idea. Remember that "EmpTable" is the name that you assign to your datatable and "EmpColumn" is the parent column, similarly apply the same logic to the Roles table. The key change to your code is that both tables must be in the same dataset with a 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

Good luck.



来源:https://stackoverflow.com/questions/3689922/drop-down-in-vb-net

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!