我有这段代码:
<asp:RadioButtonList ID="rblExpDate" runat="server" >
<asp:ListItem Selected="True" Text="No expiration date"></asp:ListItem>
<asp:ListItem Text="Expires on:"></asp:ListItem>
</asp:RadioButtonList>
我希望在页面加载时始终标记第一个选项(“无过期日期”)。 但是,如果用户标记第二个选项并重新加载,则选择第二个选项,即使我在页面加载时执行此操作:
rblExpDate.Items[0].Selected = true;
rblExpDate.SelectedIndex = 0;
感谢您的帮助!
答案 0 :(得分:1)
在onload of body标签上调用此函数
<body bottomMargin=0 leftMargin=0 topMargin=25 onload=aa() rightMargin=0>
头标记下的
<script language=Javascript>
function aa() {document.forms[0].item('rblExpDate')[1].disabled=true;}
</script>
答案 1 :(得分:1)
我遇到了同样的问题。我在页面PostBack
上发现我的radioButtonList
仍然保留了之前的所有ListItems selected property
。基本上,之前选择的RadioButtonList
的最后一项将显示为您在网页上选择的项目。因此,在您的情况下,一旦用户选择第二个项目,该项目具有属性checked=checked
,尽管您的代码将第一个项目设置为已选中。看看你的View Page Source,你会看到两个ListItem都被检查了。
我的解决方案:在PagePostBack
上将其他ListItem Selected propety
值设置为false,如下所示:
rblExpDate.Items[0].Selected = true;
rblExpDate.Items[1].Selected = false;
这将删除第二项上的Checked属性。
希望有人帮助。也许有人有更好的方法。
答案 2 :(得分:0)
您确定您的代码不在回发检查范围内吗?
if (!Page.IsPostBack)
{
rblExpDate.Items[0].Selected = true;
rblExpDate.SelectedIndex = 0;
}
更重要的是,这听起来像一个听起来不太可用的奇怪要求。如果你总是要覆盖它,为什么有一个选项?
答案 3 :(得分:0)
最可能发生的事情是在Page_Load上执行的代码首先运行,设置所需的元素。之后,RadioButtonList的SelectedIndexChanged事件触发并从ViewState获取所选项,覆盖代码所执行的操作。但是你必须调试它。
答案 4 :(得分:0)
我选择的解决方案是在Javascript(mootools)中:
window.addEvent('domready', function() {
$("rblExpDate_0").checked = true;
});
(我放弃了.net方面)
谢谢你的帮助@Slavo和@Daniel Dyson。