簡體   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