我有一个包含此代码的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”变量发生变化(真/假)时,单选按钮并不总是会改变。
答案 0 :(得分:0)
首先,如果您希望复选框在服务器上启动事件,则需要属性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;
}
答案 1 :(得分:0)
首先,我假设你在ASPX中为了测试目的而将rb_Vero
硬编码为真?删除该属性。您将在Page_Load上执行逻辑。
其次,正如@Ted所说,确保两个控件都设置为AutoPostback
。
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();
}