如何在没有冗余显示的情况下过滤到组合框?

时间:2013-10-05 03:23:37

标签: vb.net winforms

嗯,这是我的问题,如果我有数据表,如何防止在我的Combobox中双重显示 内部“Section”栏的“Student”是BE701P,BE101P,BE701P,BE701P,BE101P。 我想只显示组合框“BE701P和BE101P”这样可以防止冗余显示,是否可能?

   Private Sub section()
    Try
        conn = New OleDbConnection(Get_Constring)
        Dim sSQL As String = ("SELECT [section] FROM student where username like'" & Administrator.lblusername.Text & "%' ")
        Dim da As New OleDbDataAdapter(sSQL, conn)
        Dim ds As New DataSet
        da.Fill(ds)
        cmbsection.ValueMember = "section"
        cmbsection.DataSource = ds.Tables(0)
        cmbsection.SelectedIndex = 0
    Catch ex As Exception
        MsgBox("ERROR : " & ex.Message.ToString)
    End Try
End Sub

它会将所有数据显示在组合框中并进行冗余显示。因为我想防止冗余。我会很高兴有任何建议。

2 个答案:

答案 0 :(得分:1)

为什么不在SQL查询中使用DISTINCT,如:

 Dim sSQL As String = ("SELECT DISTINCT [section] FROM student 
 where username like'" &   Administrator.lblusername.Text & "%' ")

有关mysql示例,请参阅链接here(尽管您未指定DBMS)。

答案 1 :(得分:1)

您可以从DataTable的默认DataView创建一个DataTable,它只显示不同的记录。使用此方法的优点是您可以将所有记录保存在原始DataTable中(可用于其他一些绑定)。另请注意,这是一个客户端操作,因此如果有许多客户端执行此操作,您可以节省服务器的一些处理工作。

语法如下:

 ds.Tables(0).DefaultView.ToTable(True, {"section"})