【问题标题】:Populate a combobox with in vb.net based on a selection of another combo box from databse根据从数据库中选择的另一个组合框在 vb.net 中填充组合框
【发布时间】:2016-04-10 17:26:23
【问题描述】:

我有 2 个组合框和几个标签,问题是我想从我的一个数据库列中提取数据,即 drug_group 之后,每当我从第一个组合框中选择药物组时,我都想要数据库中相应的药物名称应填充在第二个组合框中。之后,标签应该拉出药物信息。我的问题是第一个组合框确实被填充了,但它有点重复了一些数据。然后当我从第一个组合框中选择任何项目时,会显示相同的项目。以下是我的代码,并附有我到目前为止的进度的屏幕截图。我只是想知道该怎么做谢谢。

Private Sub storeform_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    'TODO: This line of code loads data into the 'PhermacyDataSet.tblsolddrugs' table. You can move, or remove it, as needed.
    Me.TblsolddrugsTableAdapter.Fill(Me.PhermacyDataSet.tblsolddrugs)
    'TODO: This line of code loads data into the 'PhermacyDataSet1.tbldrug' table. You can move, or remove it, as needed.

    'Drug Group Combo box
    Dim connString As String = "Data Source=.\SQLEXPRESS;Database=phermacy; Integrated Security = true"
    Dim conn As New SqlConnection(connString)
    Dim strSQL As String = "SELECT * FROM tbldrug"
    Dim da As New SqlDataAdapter(strSQL, conn)
    Dim ds As New DataSet
    da.Fill(ds, "tbldrug")

    With cmbdruggp
        .DataSource = ds.Tables("tbldrug")
        .DisplayMember = "Drug_group"
        .ValueMember = "Drug_ID"
        .SelectedIndex = 0
    End With

    'Drug Name combo
    Dim strSQL1 As String = "SELECT Drug_Name FROM tbldrug WHERE Drug_group =" & Me.cmbdruggp.SelectedValue
    Dim da1 As New SqlDataAdapter(strSQL1, conn)
    Dim ds1 As New DataSet
    da.Fill(ds1, "tbldrug")

    With cmbdrugname
        .DataSource = ds1.Tables("tbldrug")
        .DisplayMember = "Drug_Name"
        .ValueMember = "Drug_group"
        .SelectedIndex = 0
    End With


End Sub

My form layout

【问题讨论】:

  • 您的具体问题是什么?请查看help 中的提问部分,了解如何提出可能得到有意义答案的问题的建议。

标签: sql-server vb.net


【解决方案1】:

您需要为第一个组合框的SelectedIndexChanged 事件实现一个事件处理程序,并将查找第二个组合框内容的代码放在那里。您可以通过双击设计器中的药物组组合框轻松创建事件处理程序。

【讨论】:

    【解决方案2】:

    在每次新加载项目之前使用cmbdrugname.Items.Clear() 方法,这样您就不会拥有多个相同的项目。

    【讨论】:

      【解决方案3】:

      尝试创建一个 selectedindexchange(通过双击组合框),类型代码如下:

      if cboName.text = "value" then
      
      cboName.add.item(value) 
      
      end if
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多