使用参数化数据源的Dropdownlist绑定在回发后不保留值

时间:2011-05-24 09:12:10

标签: asp.net drop-down-menu

有一个下拉列表绑定数据源 - >叫做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>

1 个答案:

答案 0 :(得分:0)

我使用的解决方案是通过javascript保持隐藏字段的值,使用onchange事件(更改第一个下拉列表)

这个asp.net ajax控件提供了一些帮助。

http://www.asp.net/ajax/ajaxcontroltoolkit/samples/CascadingDropDown/CascadingDropDown.aspx