代码之家  ›  专栏  ›  技术社区  ›  Bob Fincheimer

ASP.NET-下拉数据绑定(重新绑定?)

  •  2
  • Bob Fincheimer  · 技术社区  · 14 年前

    我有一个下拉列表,其中有一个方法将数据绑定到它:

    dropDown.Items.Clear()
    dropDown.AppendDataBoundItems = True
    Select Case selType
        Case SelectionTypes.Empty
            dropDown.Items.Insert(0, New ListItem("", ""))
        Case SelectionTypes.Any
            dropDown.Items.Insert(0, New ListItem("ANY", ""))
        Case SelectionTypes.Select
            dropDown.Items.Insert(0, New ListItem("Select One", ""))
        End Select
    BindDropDown(val)
    

    bindDropDown方法只需设置数据源、dataKeyName、dataValueName,然后对数据进行数据绑定。

    由于我无法避免的原因,有时我必须调用此方法两次。当调用两次时,所有数据绑定项都显示两次,但顶部项(我手动插入的项)只出现一次。

    即使清除了两次数据绑定之间的列表,ASP在做什么吗?或者它与viewstate/controlstate有关?

    编辑

    整个页面,并且此控件具有enableViewState=“false”

    编辑2

    下拉列表位于窗体视图中。设置所选值后,我必须重新绑定下拉列表,以防所选值不存在[因为它是非活动用户]。之后,FormView将复制数据绑定项。

    2 回复  |  直到 11 年前
        1
  •  1
  •   Bob Fincheimer    14 年前

    以下是发生的事情: 设置所选索引时,下拉控件将绑定数据。所以它将数据源设置为我的值表,并调用databind。

    绑定FormView时,它将设置绑定我的下拉列表的所选索引。 然而 发生这种情况后,FormView调用 数据库() 所有 它的孩子。因为我的下拉列表中有appenddatabounditems=“true”,所以它再次将数据源中的项添加到下拉列表中。

    我的解决方案:

    调用后将数据源设置为空 数据库() 在SelectedIndex属性中。当FormView调用 数据库() 它没有附加任何项,因此我没有重复项。

        2
  •  0
  •   bechbd    14 年前

    试着这样做:

    dropDown.Items.Clear()
    BindDropDown(val)
    Select Case selType
        Case SelectionTypes.Empty
            dropDown.Items.Insert(0, New ListItem("", ""))
        Case SelectionTypes.Any
            dropDown.Items.Insert(0, New ListItem("ANY", ""))
        Case SelectionTypes.Select
            dropDown.Items.Insert(0, New ListItem("Select One", ""))
    End Select