[英]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.