Выпадающий в VB.NET - PullRequest
       15

Выпадающий в VB.NET

0 голосов
/ 11 сентября 2010

У меня есть небольшое требование, а именно:

В форме есть два поля со списком для заполнения имен и ролей сотрудников.Я заполняю поля со списком следующим образом:

  1. Я создал класс с именем "DbConnect" и в нем есть две функции:

    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  
    

Данные правильно заполняются в полях со списком, и мое требование заключается в том,когда я выбираю сотрудника из первого комбо, его соответствующая роль должна быть выбрана во втором комбо.

Кто-нибудь, пожалуйста, помогите мне с этим требованием.

С уважением,
Джордж

1 Ответ

0 голосов
/ 11 сентября 2010

Вам нужно добавить источник привязки и отношение данных, чтобы это заработало.Рассмотрим эту прогулку по , она предназначена для просмотра данных, но концепция та же.

Я быстро смоделировал, чтобы дать вам идею.Помните, что «EmpTable» - это имя, которое вы присваиваете своей таблице данных, а «EmpColumn» - родительский столбец, аналогично применяйте ту же логику к таблице ролей.Главное изменение в вашем коде заключается в том, что обе таблицы должны находиться в одном наборе данных с отношением данных .

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

Удачи.

...