下拉列表值重复

时间:2011-06-29 09:14:54

标签: asp.net vb.net

我正在使用下拉列表值从数据库绑定我的代码

Public Function get_type() As String
        'get type
        If IsPostBack = False Then
            da = New OleDbDataAdapter("select (type) from prod_type", con)
            da.Fill(ds, "prod_type")
            ddtype.DataSource = ds
            ddtype.DataTextField = "type"
            ddtype.DataValueField = "type"
            ddtype.DataBind()
            da.Dispose()
            ds.Dispose()
            con.Close()
        End If

我在页面加载中调用此函数

3 个答案:

答案 0 :(得分:1)

编辑:忽略这一点,这是错误的:

这是一个SQL问题,而不是asp.net或VB问题。 您的sql不会从prod_type表中选择唯一的“类型”。执行以下SQL:

select distinct(type) from prod_type

另请阅读发布常见问题解答:https://stackoverflow.com/faq

答案 1 :(得分:0)

有两种情况,这些值会在DropDownList这里重复:

  1. 数据库中有重复的值。

  2. 您在第一次加载页面时多次调用该函数。

  3. 您可以在select语句中使用DISTINCT来解决第一种情况:

    SELECT DISTINCT type FROM prod_type
    

    您可以通过将TableAdapter.ClearBeforeFill属性的值设置为 true 来解决秒。

答案 2 :(得分:0)

像这样修改:

Public Function get_type() As String
    'get type
    If IsPostBack = False Then
        ds.Clear() //new
        ddtype.Items.Clear() //new
        da = New OleDbDataAdapter("select (type) from prod_type", con)
        da.Fill(ds, "prod_type")
        ddtype.DataSource = ds
        ddtype.DataTextField = "type"
        ddtype.DataValueField = "type"
        ddtype.DataBind()
        da.Dispose()
        ds.Dispose()
        con.Close()
    End If

如果您仍然有重复的条目,那应该是因为您在数据库中有重复项。