我有两个带有sql值的下拉列表,它们也有初始值,第二个下拉列表在从第一个下拉列表中选择后会发生变化,所以我应该在第一个列表中发生变化后清除第二个下降列表值,但在清除第一个下降列表后,我的初始值没有出现。我应该在后台代码中做什么来显示清除后的初始值?
第一个下拉列表:
<asp:dropdown ID="OrderNo" runat="server" MaxLength="0" style="display: inline;"
AppendDataBoundItems="True" DataSourceID="OrderNo_SqlDS" DataTextField="OrderNo"
DataValueField="OrderNo" onselectedindexchanged=" OrderNo_SelectedIndexChanged" AutoPostBack="true">
<asp:ListItem Text="--Select One--" Value="" /></asp:dropdown>
第二个下拉菜单:
<asp:dropdown ID="Part" runat="server" MaxLength="0" style="display: inline;"
AppendDataBoundItems="True" DataSourceID="Part_SqlDS" DataTextField="Part"
DataValueField="Part" onselectedindexchanged=" Part_SelectedIndexChanged" AutoPostBack="true">
<asp:ListItem Text="--Select One--" Value="" /></asp:dropdown>
在我的后台代码中:
protected void OrderNo_SelectedIndexChanged(object sender, EventArgs e)
{
Part.Items.Clear();
Part.DataBind();
}
DropDownList控件中始终选择一个项目。您不应该从所选索引更改方法的下拉列表中清除元素。在进行数据绑定之前,请尝试设置数据源属性
protected void OrderNo_SelectedIndexChanged(object sender, EventArgs e)
{
Part.DataSourceID="Part_SqlDS"
Part.DataBind();
}
-
您不需要使用
OrderNo_SelectedIndexChanged
来绑定第二个控件,因为第一个dropdownlist会导致回发。Once postback happens SqlDataSource controls automatically refreshes and bind
数据到数据绑定控件。 -
Your initial value disappears
,因为您清除了所有项,并告诉控件取回数据(DataBind())。What happens is
控件将仅从SqlDataSource获取数据,而不会从其他源获取数据。除非您这次使用代码隐藏再次添加,否则您的初始值将消失But the solution is
:you don't need to clear items at all
。我想你害怕重复项,但SqlDataSource控件不会发生这种情况,它会刷新数据,如果对源进行了更改,则只显示更改。 -
If you insist in using the code
仅使用部分。DataBind();您不需要清除项目注意:在这种情况下是you're causing double operation
,因为DataSource控件无论如何都会绑定您的控件。
希望这能有所帮助!