首页 > 解决方案 > 单选按钮列表选择的不连贯回发行为

问题描述

我有一个:

如果我单击取消选择,然后单击保存,则会显示第一项的索引 0。这种看似错误的行为是由重新加载页面并根据默认设置进行选择的回发引起的。

但是:如果我现在选择 List 的 Item2 然后单击保存,我希望回发将 RadioButtonList 重置为其初始值的行为相同。但显示 List-Item2 的索引 1。

所以“未选择”在回发时被否决,而“选择”不是!真的是这样吗?混乱且难以处理。

    <asp:RadioButtonList ID="RBL_SelectType" runat="server">
        <asp:ListItem Text="Choice1" Value="0" Selected="True" />
        <asp:ListItem Text="Choice2" Value="1" />
    </asp:RadioButtonList>

    <asp:LinkButton ID="LB_Reset" runat="server" OnClick="Unselect">unselect RBL</asp:LinkButton>
    <asp:LinkButton ID="LB_Save" runat="server" OnClick="Save">Save</asp:LinkButton>

    <asp:Label runat="Server" ID="Message" />

和:

    protected void Save(object sender, EventArgs e)
    {
        Message.Text = "Index = " + Convert.ToString(RBL_SelectType.SelectedIndex);
    }

    protected void Unselect(object sender, EventArgs e)
    {
        RBL_RBL_SelectType.SelectedIndex = -1;
    }

标签: c#asp.netpostbackradiobuttonlist

解决方案


这是我遇到的问题的解决方案,尽管它不能解释我眼中一直语无伦次的行为;我希望从其他用户那里收到更多关于此行为的反馈或确认。

因此,每当您需要为 RadioButtonList 设置默认选择时,请勿在标记中执行此操作,因为它会在回发后丢失“未选择”选择,但请在 page_load 后面的代码中执行此操作。

protected void Page_Load(object sender, EventArgs e)
{
   if (!Page.IsPostBack)
   {
       RBL_SelectType.SelectedIndex = 0;
   }

推荐阅读