繁体   English   中英

C#RadioButton检查异常

[英]C# RadioButton Checked anomalous

我有一个包含此代码的aspx页面。

<asp:RadioButton id="rb_Vero" ClientIDMode="Static" GroupName="RegularMenu" Text="" runat="server" Checked="true"/>        
<asp:RadioButton id="rb_Falso" ClientIDMode="Static" GroupName="RegularMenu" Text="" runat="server"/> 

在cs页面上,这是落后的。

if (verificata == true) 
   rb_Vero.Checked = true;
else 
    rb_Falso.Checked = true;

当“ verificata”变量更改(是/否)时,单选按钮并不总是更改。

首先,如果希望复选框在服务器上启动事件,则需要属性AutoPostback = "true"

现在,根据verificata的设置,您是否不需要取消选中另一个复选框:

// you need to choose an appropriate event for the block below
if (verificata) 
{
   rb_Vero.Checked = true;
   // add this
   rb_Falso.Checked = false;
}
else 
{
   rb_Falso.Checked = true;
   // add this    
   rb_Vero.Checked = false;
}

首先,我假设您将rb_Vero硬编码为true,以便在ASPX中进行测试? 删除该属性。 您将在Page_Load上执行逻辑。

其次,如@Ted所说,确保两个控件的AutoPostback都设置为true。

protected void Page_Load(object sender, EventArgs e)
{
    // Sample only - update to load from ViewState on Postbacks
    if (verificata == "true") 
    {
        rb_Vero.Checked = true;
        rb_Falso.Checked = false;
    }
    else 
    {
        rb_Vero.Checked = false; 
        rb_Falso.Checked = true;
    }
}

最后,列表控件存在一个已知问题。 除非您重写SaveViewState和LoadViewState方法来存储和检索这些值,否则它将不起作用。

protected override void LoadViewState(object savedState)
{
    base.LoadViewState(savedState);

    // Sample snippet - update for your controls
    if (ViewState["Checked"] != null)
        checked = (bool)ViewState["Checked"];
}

protected override object SaveViewState()
{
    // Sample snippet - update for your controls
    ViewState["Checked"] = checked;

    return base.SaveViewState();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM