ddl2成功填充ddl1选定值。
我的问题是,在添加新数据之前,ddl2中已存在的数据不会清除,因此ddl2内容每次更改ddl1时都会继续增长。
<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中发布任何代码
答案 0 :(得分:21)
使用ddl.Items.Clear()
会清除下拉列表,但您必须确保您的下拉列表不设置为:
AppendDataBoundItems="True"
此选项将导致反弹数据附加到现有列表中,在绑定之前 NOT 将被清除。
<强>解强>
将 AppendDataBoundItems="False"
添加到您的下拉列表中。
现在,当数据反弹时,它会自动清除所有现有数据。
Protected Sub ddl1_SelectedIndexChanged(sender As Object, e As EventArgs)
ddl2.DataSource = sql2
ddl2.DataBind()
End Sub
注意: 这可能不适合所有情况,因为appenddatbound项可能会导致您的下拉列表在列表的每次更改时附加自己的数据。
TOP TIP
仍然希望默认列表项添加到您的下拉列表但需要重新绑定数据吗?
使用AppendDataBoundItems="False"
来防止回发时的重复数据,然后在绑定下拉列表后直接插入新的默认列表项。
ddl.Items.Insert(0, New ListItem("Select ...", ""))
答案 1 :(得分:9)
您应该在绑定之前清除listbbox:
Me.ddl2.Items.Clear()
' now set datasource and bind
答案 2 :(得分:5)
请使用以下
ddlCity.Items.Clear();
答案 3 :(得分:2)
只需2个简单的步骤即可解决您的问题
首先检查AppendDataBoundItems属性并使其指定为false
其次使用property .clear()
清除所有项目{
ddl1.Items.Clear();
ddl1.datasource = sql1;
ddl1.DataBind();
}
答案 4 :(得分:1)
刚刚编译了你的代码,唯一缺少的就是你必须将你的ddl2绑定到一个空的数据源再绑定它之前再这样:
受保护的Sub ddl1_SelectedIndexChanged(ByVal sender As Object,ByVal e作为EventArgs) //ddl2.Items.Clear()
ddl2.DataSource=New List(Of String)() ddl2.DataSource = sql2 ddl2.DataBind() End Sub
它工作得很好