有一个下拉列表绑定数据源 - >叫做DropDownList A. 此数据源从另一个下拉列表中获取另一个参数 - >称为DropDownList B
Everytime DropDownList B更改所选值,Dropdownlist A的数据源将接收参数并更改下拉列表A.
每当DropDownlist更改其索引时,它将导致回发,并且所选值将重置为第一个索引(默认值)。
切换DropDownList A后使用没有参数的数据源。这个问题不会发生。 在DropDownList A更改了其值并回发后,仍然存在重新更改的值。
我尝试过使用更新面板,但它仍然无效。
这是DropDownList B,Add On Type
<asp:DropDownList ID="ddlAddOnType" runat="server" AppendDataBoundItems="True"
AutoPostBack="True" ClientIDMode="Static" CssClass="controlOrdinary"
DataSourceID="odsAddOnType" DataTextField="AddOnTypeName"
DataValueField="AddOnTypeId"
onselectedindexchanged="ddlAddOnType_SelectedIndexChanged" Width="208px">
<asp:ListItem Value="0">--Please Select--</asp:ListItem>
</asp:DropDownList>
这是dropDownlist A的数据源
<asp:ObjectDataSource ID="odsAddon" runat="server"
SelectMethod="SelectAddOnThatIsNotInCurrentPromotionWithAddOnByAddOnTypeId"
TypeName="BackOfficeLib.SupportAdmin.PromotionBinder">
<SelectParameters>
<asp:ControlParameter ControlID="ddlAddOnType" Name="pIntAddOnTypeId"
PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
这是下拉列表A,当此值更改时,页面会突然回发并重新索引索引。
<asp:DropDownList ID="ddlAddOn" runat="server" AppendDataBoundItems="True"
AutoPostBack="True" ClientIDMode="Static" CssClass="controlOrdinary"
DataTextField="AddOnName" DataValueField="AddOnId"
onselectedindexchanged="ddlAddOn_SelectedIndexChanged" Width="208px">
<asp:ListItem Value="0">--Please Select--</asp:ListItem>
</asp:DropDownList>
答案 0 :(得分:0)
我使用的解决方案是通过javascript保持隐藏字段的值,使用onchange事件(更改第一个下拉列表)
这个asp.net ajax控件提供了一些帮助。
http://www.asp.net/ajax/ajaxcontroltoolkit/samples/CascadingDropDown/CascadingDropDown.aspx