【问题标题】:Fill multiple combo boxes with multiple results用多个结果填充多个组合框
【发布时间】:2020-03-14 03:56:07
【问题描述】:

我有五个组合框需要填充与插入其中的文本相关的项目。

如何重复使用相同的函数来填充 DataTable 中具有不同结果的多个组合框?

Private Sub Search()

    Dim adp As SqlDataAdapter = New SqlDataAdapter("select stage from sample where stage like '%" + ComboBox1.Text + "%'", connection)

    Dim table As New DataTable
    adp.Fill(table)

    ComboBox1.DataSource = New BindingSource(table, Nothing)
    ComboBox1.DisplayMember = "stage"
End Sub

Private Sub ComboBox1_PreviewKeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles ComboBox1.PreviewKeyDown
        If e.KeyCode = Keys.Tab Then
            Search()
        End If
    End Sub

【问题讨论】:

  • 您可以使用DataSet来查询多个表,然后将每个表绑定到相关的组合框。
  • 听起来您将所有内容都放在一个表中。
  • 这是对数据库的大量点击。您是否已经有一个 DataTable 来填充这些组合?您也许可以在 DataTable 上调用 .Select 方法。

标签: vb.net datatable combobox bindingsource


【解决方案1】:

创建一个像这样工作的函数:

Public Sub BindComboBox(ByRef cboBox As ComboBox, ByVal sSQL As String, ByVal sFieldNameOfReturnValue As String, ByVal sFieldNameOfDisplayText As String)
    Try
        Dim adp As SqlDataAdapter = New SqlDataAdapter(sSQL, connection)
        Dim dtAllData As New DataTable
        adp.Fill(dtAllData)

        Dim xBindingContext As New BindingContext
        With cboBox
            .BindingContext = xBindingContext
            .DataSource = dtAllData

            .ValueMember = sFieldNameOfReturnValue.ToUpper
            .DisplayMember = sFieldNameOfDisplayText.ToUpper
        End With
    Catch Exp As Exception
        'Handle exceptions here
    End Try
End Sub

然后你会这样调用这个函数:

Call BindComboBox(ComboBox1, "select stage from sample where stage like '%" + ComboBox1.Text + "%'", "stage", "stage")
Call BindComboBox(cboCompanies, "SELECT CompanyID, CompanyName, FROM Companies", "CompanyID", "CompanyName")

【讨论】:

  • 易受 Sql 注入攻击。
  • 是的。但那是 Oswald Vinny 提交的问题 SQL。我永远不会那样做。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多