如何在回发期间使单选按钮(列表项)保持选中状态

时间:2013-08-12 19:23:50

标签: asp.net asp.net-ajax updatepanel postback autopostback

基本上我有一个放在UpdatePanel中的RadioButtonList,它位于另一个UpdatePanel内。一旦我在这个列表中选择了一个项目,它立即取消选择,当然由回发触发。现在,我的代码隐藏在任何地方都没有改变RadioList的selected属性。现在,假设viewstatemode = enabled,所选索引将在回发之间保留。但是当选择该项时会发生什么,它会立即被取消选择。

我的内部(嵌套)UpdatePanel代码如下所示。

     <asp:UpdatePanel ID="OptionsUpdater" UpdateMode="Conditional" runat="server" ChildrenAsTriggers="true" ViewStateMode="Enabled"> 
     <ContentTemplate>
               <asp:Panel runat="server" ID="rightside" CssClass="column4 row2">
                        <%--Options Panel--%>
                        <div id="OptionsPanel">
                            <div style="padding: 2px; border-color: black; border-style: solid; border-width: 1px; background-color: white; position: relative; top: -45px; left: -40px; border-radius: 8px;">
                                <p class="bluegradientBG3 massheader"
                                    style="margin-left: -5px; min-width: 305px; font-size: 1.5em; border-radius: 14px; font-family: Arial; text-align: center">
                                    Options
                                </p>
                                <asp:RadioButtonList ID="OptionsRadioList" runat="server"
                                    Height="120px" Width="269px"
                                    AutoPostBack="true"
                                    CellPadding="9"
                                    CellSpacing="2"
                                    ViewStateMode="Enabled"
                                    >
                                    <asp:ListItem Value="update">Update Existing Parts</asp:ListItem>
                                    <asp:ListItem Value="add">Add New Parts</asp:ListItem>
                                    <asp:ListItem Value="delete">Mass Delete</asp:ListItem>
                                </asp:RadioButtonList>
                                <asp:CheckBoxList ID="OptionsCheckList" runat="server" Height="100px" Width="269px"
                                    OnSelectedIndexChanged="OptionsCheckList_SelectedIndexChanged">
                                    <asp:ListItem Value="NTDs">Update NTDs Only</asp:ListItem>
                                    <asp:ListItem Value="addpart">Add Part If None Assigned</asp:ListItem>
                                    <asp:ListItem Value="changelocations">Change N/A Locations To Selected</asp:ListItem>
                                </asp:CheckBoxList>
                    </asp:Panel>
                </ContentTemplate>
              </asp:UpdatePanel>

代码中的外部UpdatePanel方式如下所示:

 <asp:UpdatePanel ID="OverallUpdater" UpdateMode="Conditional" runat="server" ChildrenAsTriggers="true">
     <ContentTemplate>

          //content omitted for brevity
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="viewapps" EventName="Click" />
            <asp:AsyncPostBackTrigger ControlID="UpdateButton" EventName="Click" />
            <asp:AsyncPostBackTrigger ControlID="FilterButton" EventName="Click" />
            <asp:AsyncPostBackTrigger ControlID="OptionsRadioList" EventName="SelectedIndexChanged" /> 
        </Triggers>
    </asp:UpdatePanel>  

1 个答案:

答案 0 :(得分:0)

在PostBack中,您是否在设置RadioButtonList的数据源?如果是这样,那就是重置它。

如果您想在第一次为用户加载页面时加载RBL的数据源,请将其置于条件内,如下所示:

if(!IsPostBack)
{
    // Load your RBL with your data
}