【问题标题】:Set ComboBox datasource in parent Form在父窗体中设置 ComboBox 数据源
【发布时间】:2014-04-15 14:27:26
【问题描述】:

我正在从数据库中加载人员数据并按如下方式填充数据集:

sql = " select * from personnel "
daAdapter = New SqlDataAdapter(sql, sqlConn)
daAdapter.Fill(dsDataset, "personnel ")
dgvPersonnel.datasource=dsDataset.Tables("personnel ")

sql = " select depId, name from department "
daAdapter = New SqlDataAdapter(sql, sqlConn)
daAdapter.Fill(dsDataset, "department")

'Set department combobox datasource for filtering
cmbDepartment.DataSource = dsDataset.Tables("department")
cmbDepartment.DisplayMember = "name"
cmbDepartment.ValueMember = "depId"

'Set datasource for personnel datagridview
dgvPersonnel.datasource=dsDataset.Tables("department")

现在,当我双击 dgvPersonnel 中的任何人员时,我会加载另一个表单“frmPersonnelDatails”,以便能够修改人员数据,其中我还有一个组合框来选择人员的部门。

我现在关心的是如何将“frmPersonnelDatails”表单中组合框的数据源设置为我的数据集中的部门表,而不是再次查询数据库以加载。这意味着我不想多次查询数据。我尝试了以下但无法得到结果:

Try
    serviceNo= dgvPersonnel.Rows(dgvPersonnel.CurrentRow.Index).Cells(0).Value
    Dim form As New frmPersonnelDatails
    personnelMode = "modify"

    form.cmbDepartment.DataSource = dsDataset.Tables("department")
    form.cmbDepartment.DisplayMember = "name"
    form.cmbDepartment.ValueMember = "depId"

    form.ShowDialog()
Catch ex As Exception
    MsgBox(Err.Description)
End Try

【问题讨论】:

    标签: vb.net forms combobox datasource parent


    【解决方案1】:

    为了在您的其他表单中设置组合框的数据源,请在您的构造函数中发送 DataSet...

    这是一个例子:

     Dim fPD As frmPersonnelDatails = New frmPersonnelDatails('YOUR DS') 'Pass your dataset in the constructor'
     fPD.ShowDialog()
    

    在您的班级中:frmPersonnelDatails 确保有一个新的构造函数...

     Sub New(ByVal dSet As DataSet)
        cmbDepartment.DataSource = dSet.Tables("department")
        cmbDepartment.DisplayMember = "name"
        cmbDepartment.ValueMember = "depId"
     End Sub
    

    另一种选择是在你的类中声明一个新的 DataSet,然后在新的....上设置它。

     Private datSet As DataSet
    

    然后在你的新子中......你可以设置它......

     Public Sub New(ByVal dSet As DataSet)
        datSet = dSet 'Now you have your DataSet and you can use it anywhere you want'
     End Sub
    

    【讨论】:

    • 非常感谢 CoDeXeR 先生,我已经让它完美运行了。好吧,我在您的第一个答案中又添加了一行代码:InitializeComponent()
    • 对,这是凭记忆...如果这有帮助,别忘了点赞。谢谢!
    猜你喜欢
    • 2019-09-23
    • 2012-03-12
    • 2010-11-23
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多