wtuqi
2/23/2020 - 5:46 AM

ComboBox二级下拉去重复

Private Sub LoadCombox()
    'TODO: 这行代码将数据加载到表“DataDataSet.Pr2”中。您可以根据需要移动或移除它。
    Me.Pr2TableAdapter.Fill(Me.DataDataSet.Pr2)
    Dim Dt As New DataTable
    Dt = Me.DataDataSet.Pr2.DefaultView.ToTable(True, "变电站")

    ComboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend
    ComboBox1.DataSource = Dt
    ComboBox1.DisplayMember = "变电站"
    ComboBox1.AutoCompleteSource = AutoCompleteSource.ListItems
End Sub

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    If ComboBox1.Text <> Nothing Then

        ComboBox2.Sorted = True '一定要放在绑定之前设置下拉为自动排序
        ComboBox2.DataSource = Me.DataDataSet.Pr2.Select(String.Format("变电站='{0}'", ComboBox1.Text)) '绑定为过滤后的数据表
        ComboBox2.DisplayMember = "台区" '显示字段

        Dim MyList As New ArrayList '设置一个列表存储数据源
        Dim Constr As String = Nothing
        For i As Integer = 0 To ComboBox2.Items.Count - 1

            If Constr <> ComboBox2.GetItemText(ComboBox2.Items(i)).ToString Then '如果下拉当前值与上一项不相同
                MyList.Add(ComboBox2.GetItemText(ComboBox2.Items(i)).ToString)
                Debug.Print(Constr)
            End If
            Constr = ComboBox2.GetItemText(ComboBox2.Items(i)).ToString '给变量赋下拉当前值
        Next

        ComboBox2.DataSource = MyList
        ComboBox2.DisplayMember = "台区"
        ComboBox2.AutoCompleteMode = AutoCompleteMode.SuggestAppend
        ComboBox2.AutoCompleteSource = AutoCompleteSource.ListItems

    End If

End Sub