为什么我的单选按钮列表仅在选定值= 1时触发
本文关键字:1时 单选按钮 我的 列表 为什么 | 更新日期: 2023-09-27 17:50:20
我不知道为什么只有当我选择第二个列表项时,我的radiobuttonlist
才会着火!
My 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>
My .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;
}
}
好吧,你的问题开始不是当selectedvalue =1
,它开始一旦你设置面板的可见性为真。
问题本身是在你的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>
....
试试下面的代码:
<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();
}