【问题标题】:how to filter the combobox values in vb如何过滤vb中的组合框值
【发布时间】:2017-05-04 10:37:22
【问题描述】:

我是 VB 的新手。我有一个保单号。 VB 中的组合框在我输​​入保单编号的前四位数字后填充。但是,如果我继续输入数字,它会覆盖我已经输入的内容并清除下拉列表,就像选择我输入的新 4 个数字一样。我想实现一个场景,我将输入前 4 个数字以填充下拉列表,然后我继续输入 policyno 下拉列表中的值被搜索。

E.G:保单号:969003648,当我输入 9690 时,下拉列表中会填入从 969000001 开始的保单号,现在当我继续键入 969003 等值时,搜索到的值仅限于具有 969003 的保单号作为起始值...请协助

我的代码:

Private Sub PolicyNo_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = 46 Or KeyCode = 8 Then
Me.PolicyNo.value = ""
Else

If Len(Me.PolicyNo.Text) >= 4  Then
Me.PolicyNo.RowSource = ""
Call ReloadPolicyNo(Nz(Me.PolicyNo.Text, ""))

Function ReloadPolicyNo(sPolicyNo As String)

Me.PolicyNo.RowSource = "SELECT Inventory.PolicyNo FROM Inventory " & _
                          "WHERE Left(Inventory.PolicyNo," & Len(Me.PolicyNo.Text) & ")  = '" & Me.PolicyNo.Text & "' order by Inventory.PolicyNo"
End Function

【问题讨论】:

    标签: combobox


    【解决方案1】:

    为什么不使用组合框上的 Textchanged 事件来获取组合框中的当前内容?

    例子

        'THIS FIRES WHEN TEXT IS ENTERED INTO THE COMBOBOX
    Private Sub ComboBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.TextChanged
    
        'GET VALUE IN COMBOBOX
        Dim enteredText As String = ComboBox1.Text
        Dim strSelect As String = "select * from table where field like = '" & enteredText & "'%"
    
        'load COMBO BOX HERE
    
    End Sub
    

    【讨论】:

      【解决方案2】:

      这里最好使用DataView,我将DataTable声明为class Variable

      Dim dt as DataTable
      

      从数据库中获取所有数据并将其绑定到声明的DataTable,此DataTable 进一步添加到DataView 并使用RowFilter 过滤DataViewCompay_Type 是我的DataTable 中的列之一下面的代码将过滤DataView 并将数据绑定到列Company_Type=1

                  Dim dvComp As New DataView(dt)
                  dvComp.RowFilter = "Company_Type=1"
                  ComboBox1.DisplayMember = "CompanyName"
                  ComboBox1.ValueMember = "CompanyID"
                  ComboBox1.DataSource = dvComp
      

      要删除过滤器,只需使用dvComp.RowFilter = Nothing

      【讨论】:

      • 你对我的回答投了反对票吗?你是否觉得我的诚实很伤人,因为你习惯于对付不诚实的人在背后攻击别人?我现在该怎么处理你的回答?客观上是错误的,因为没有解决 OP 的要求;它甚至没有很好的格式(没有时间,但有足够的时间访问 4 岁的问题来打扰其他人)。它值得一票否决,但我不会这样做。我很少投反对票(非建设性的,通常是武断和懦弱的攻击);另外,正是由于像你这样的态度,我不再为 SO 做贡献了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多