如何在客户端的asp.net中根据某些条件禁用radiobutton的回发?

时间:2013-01-10 02:37:44

标签: javascript asp.net radio-button postback selectedindexchanged

我的表单中定义了radiobutton列表。当用户选择任何选项时,我们进行回发,然后执行业务逻辑。 现在问题是,我想在用户检查单选按钮选项时添加一个确认;当用户选择OK时,我只想继续。

样品流程:
    1.假设检查radiobutton中的FirstItem     2.用户将选择第二项 - 然后我想添加“你确定”的确认 -
    3.如果用户选择否
 然后我应该恢复检查更改没有回发
    否则
   执行回发,然后执行业务逻辑

代码如下:

<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个小时就疯了。

EDIT1:

我在互联网上搜索,找到解决方案的一半问题!

  <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时,单选按钮中的值会丢失,即没有选择任何单选按钮:

3 个答案:

答案 0 :(得分:0)

试试OnClientClick='return confirmcheck();'。呈现页面时,该值将呈现为onclick属性的值。此外,如果默认处理将继续,则返回结果将发出信号。

OnClick指定服务器端事件处理程序。

答案 1 :(得分:0)

试试这个:

<asp:ListItem Text="1" Value="1" onClick="if(!confirmcheck()) return false;"></asp:ListItem>
<asp:ListItem Text="2" Value="2" onClick="if(!confirmcheck()) return false;"></asp:ListItem>

在onClick中返回true或false也会阻止回发发生,因此我们只在confirmcheck()为false时返回。

我测试了它的工作原理

答案 2 :(得分:0)

在单选按钮的HTML声明中包含“EnableViewState = true”。在包含此属性后,您的EDIT1解决方案应该可以正常工作,因此如果您返回false,则状态不会松动。