Asp.net

內容更改時如何清除現有的下拉列表項?

  • January 17, 2019

ddl2 根據 ddl1 選擇的值成功填充。

我的問題是 ddl2 中已經存在的數據在添加新數據之前沒有清除,因此每次 ddl1 更改時 ddl2 內容都會繼續增長。

<asp:DropDownList ID="ddl1" RunAt="Server" DataSourceID="sql1" DataValueField="ID1" DataTextField="Name2" AppendDataBoundItems="True" AutoPostBack="True">
 <asp:ListItem Text="ALL" Selected="True" Value="0"/>
</asp:DropDownList>

<asp:DropDownList ID="ddl2" RunAt="Server" DataSourceID="sql2" DataValueField="ID2" DataTextField="Name2" AppendDataBoundItems="True" AutoPostBack="True">
 <asp:ListItem Text="ALL" Selected="True" Value="0"/>
</asp:DropDownList>

<asp:SqlDataSource ID="sql1" RunAt="Server" SelectCommand="sp1" SelectCommandType="StoredProcedure"/>

<asp:SqlDataSource ID="sql2" RunAt="Server" SelectCommand="sp2" SelectCommandType="StoredProcedure">
 <SelectParameters>
   <asp:ControlParameter Type="Int32" Name="ID1" ControlID="ddl1" PropertyName="SelectedValue"/>
 </SelectParameters>
</asp:SqlDataSource>

我已經嘗試在選定的索引更改和 items.clear 的程式碼中重新數據綁定,但收效甚微。

Protected Sub ddl1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
   ddl2.Items.Clear()
   ddl2.DataSource = sql2
   ddl2.DataBind()
End Sub

問題

當下拉列表內容依賴於另一個下拉列表選定值時,如何在填充新值之前清除 asp:dropdownlist 中存在的項目?

請在VB中發布任何程式碼

使用ddl.Items.Clear()將清除下拉列表,但您必須確保您的下拉列表設置為:

AppendDataBoundItems="True"

此選項將導致反彈數據附加到現有列表中,該列表在綁定之前不會被清除。

解決方案

添加**AppendDataBoundItems="False"**到您的下拉列表。

現在當數據反彈時,它會預先自動清除所有現有數據。

Protected Sub ddl1_SelectedIndexChanged(sender As Object, e As EventArgs)
   ddl2.DataSource = sql2
   ddl2.DataBind()
End Sub

注意: 這可能並不適用於所有情況,因為 appenddatbound 項目可能會導致您的下拉列表在列表的每次更改時附加其自己的數據。


重要提示

仍然希望將預設列表項添加到您的下拉列表中,但需要重新綁定數據?

用於AppendDataBoundItems="False"防止在回發時重複數據,然後在綁定下拉列表後直接插入新的預設列表項。

ddl.Items.Insert(0, New ListItem("Select ...", ""))

引用自:https://stackoverflow.com/questions/16460891