我在表单中定义了一个单选按钮列表。当用户选择任何选项时,我们会进行回发,然后执行业务逻辑。现在的问题是,我想在用户检查单选按钮选项时添加用户确认;当用户选择确定时,只有我想继续。
示例流程:
1. 假设选中单选按钮中的 FirstItem。
2. 用户会去选择第二个项目 - 然后我想添加一个确认,比如“你确定吗” -
3. 如果用户选择 NO
那么我应该在没有回发的情况下恢复检查更改
否则
执行回发然后业务逻辑
代码如下:
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div>
<asp:UpdatePanel ID="UpdatePanelCheckBoxes" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:RadioButtonList ID="rdo" runat="server" RepeatDirection="Horizontal" AutoPostBack="true"
OnSelectedIndexChanged="LabourScheduleType_CheckedChanged">
<asp:ListItem Text="1" Value="1" onClick="confirmcheck();"></asp:ListItem>
<asp:ListItem Text="2" Value="2" onClick="confirmcheck();"></asp:ListItem>
</asp:RadioButtonList>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
代码隐藏代码是这样的
我还写了一个javascript函数来控制回发
<script type="text/javascript">
function confirmcheck() {
var retVal = confirm("test");
return retVal;
}
</script>
我尝试了所有方法,例如添加 onclick 之类的属性,然后在方法中返回 false 等等。不知何故,回发总是发生,我也不知道如何恢复更改的支票!从过去的 4 个小时开始,我为此发疯了。
编辑1:
我在互联网上搜索并找到了解决我一半问题的方法!
<asp:UpdatePanel ID="UpdatePanelCheckBoxes" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:RadioButton ID="RadioButton1" OnCheckedChanged="aaa_cc" GroupName="aa" runat="server" AutoPostBack="true" Text="test1" />
<asp:RadioButton ID="RadioButton2" OnCheckedChanged="aaa_cc" GroupName="aa" runat="server" AutoPostBack="true" Text="test2" />
</ContentTemplate>
</asp:UpdatePanel>
文件背后的代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
RadioButton1.Attributes.Add("onClick", "this.blur(); return RadioClick(this);");
RadioButton2.Attributes.Add("onClick", "this.blur(); return RadioClick(this);");
}
}
Javacript 是这样的:
<script type="text/javascript">
function RadioClick(radioButton)
{
if (confirm('Are you sure?'))
{
__doPostBack(radioButton.id,'');
}
else
{
return false;
}
}
</script>
唯一的问题是当我返回 false 时,单选按钮中的值会丢失,即没有选择任何单选按钮:(