0

我不知道为什么radiobuttonlist只有当我选择第二个列表项时才会触发!

我的 aspx :

    <asp:Panel ID="pnl_select_sign" runat="server" Visible="false">
            <asp:RadioButtonList ID="rb_select_sign" runat="server" AutoPostBack="true" RepeatDirection="Horizontal"
                OnSelectedIndexChanged="rb_select_sign_SelectedIndexChanged" CausesValidation="false" AppendDataBoundItems="true">
                <asp:ListItem Selected="True" Value="0">normal</asp:ListItem>
                <asp:ListItem Value="1">abnormal</asp:ListItem>
            </asp:RadioButtonList>
    </asp:Panel> 
  <div class="events" dir="rtl">
        <fieldset>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:Panel ID="pnl_PageNew_UC" runat="server" Width="100%">
                    </asp:Panel>
                    <asp:Panel ID="pnl_sign" runat="server" Width="100%" Visible="false">
                    </asp:Panel>
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="rb_select_sign" EventName="SelectedIndexChanged" />
                </Triggers>
            </asp:UpdatePanel>
        </fieldset>
    </div>

我的 .cs :

 protected void rb_select_sign_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (rb_select_sign.SelectedValue == "0")
            {
                pnl_PageNew_UC.Visible = true;
                pnl_sign.Visible = false;

            }
            else
            {
                pnl_PageNew_UC.Visible = false;
                pnl_sign.Visible = true;

            }
        }
4

2 回答 2

1

试试这个代码:

<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:Panel ID="pnl_select_sign" runat="server">
                <asp:RadioButtonList ID="rb_select_sign" runat="server" AutoPostBack="true" RepeatDirection="Horizontal"
                    OnSelectedIndexChanged="rb_select_sign_SelectedIndexChanged" CausesValidation="false"
                    AppendDataBoundItems="true">
                    <asp:ListItem Selected="True" Value="0">normal</asp:ListItem>
                    <asp:ListItem Value="1">abnormal</asp:ListItem>
                </asp:RadioButtonList>
            </asp:Panel>
        </ContentTemplate>
    </asp:UpdatePanel>

    <div class="events" dir="rtl">
        <fieldset>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                <ContentTemplate>
                    <asp:Panel ID="pnl_PageNew_UC" runat="server" Width="100%">
                        123
                    </asp:Panel>
                    <asp:Panel ID="pnl_sign" runat="server" Width="100%" Visible="false">
                        312
                    </asp:Panel>
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="rb_select_sign" EventName="SelectedIndexChanged" />
                </Triggers>
            </asp:UpdatePanel>
        </fieldset>
    </div>

在后面的代码中:

        protected void rb_select_sign_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (rb_select_sign.SelectedValue == "0")
            {
                pnl_PageNew_UC.Visible = true;
                pnl_sign.Visible = false;

            }
            else
            {
                pnl_PageNew_UC.Visible = false;
                pnl_sign.Visible = true;

            }

            UpdatePanel1.Update();
        }
于 2012-12-30T08:12:49.817 回答
1

好吧,您的问题不是从 开始的selectedvalue =1,而是在您将面板的可见性设置为 true 时开始的。

问题本身在您的AsyncPostBackTrigger,您的触发器在 UpdatePanel之外,因此不再触发。

这很容易解决,将 RadioButtonList 放在 ContentTemplate 中:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
  <ContentTemplate>
    <asp:Panel ID="pnl_select_sign" runat="server" >
        <asp:RadioButtonList ID="rb_select_sign" runat="server" AutoPostBack="true" RepeatDirection="Horizontal" ... />
    </asp:Panel> 
    <asp:Panel ID="pnl_PageNew_UC" runat="server" Width="100%">
    </asp:Panel>
....
于 2012-12-30T08:17:19.067 回答