【问题标题】:C#/ASP web, ASP:Checkbox to do messagebox on client side, if yes run server side codeC#/ASP web, ASP:Checkbox 在客户端做消息框,如果是则运行服务器端代码
【发布时间】:2016-04-06 19:59:33
【问题描述】:

如果这个问题已经在某个地方得到解答,我深表歉意,但我找不到我的特定问题的答案。

我有一个 asp 对象:

 <asp:CheckBox ID="chkRemove"  runat="server" Checked='<%#Convert.ToBoolean(Eval("CommonWord")) %>' OnCheckedChanged
= "OnCheckedChanged_CommonWord" AutoPostBack="true"  />

基本上,我想显示一个消息框,询问是否可以删除,如果选择否或取消,则不执行回发(或不运行任何服务器端代码),如果是,则运行该函数“OnCheckedChanged_CommonWord”。

我尝试执行一个弹出的 javascript Confirm() 调用,但如果我按下是,C# 服务器端代码不会运行(“OnCheckedChanged_CommonWord”),“否”或“取消”可以完美运行,因为它不会回发。

附:由于我的服务器限制,请不要使用 AJAX。

【问题讨论】:

    标签: javascript c# jquery asp.net .net


    【解决方案1】:

    Checkbox 控件实际上缺少任何类型的OnClientCheckChanged 事件,这些事件可用于根据客户端事件来管理是否应该发生PostBack(如OnClientClick 等)。

    但是您应该能够使用onclick 属性和一个通过手动调用来管理默认PostBack 的功能来完成此操作:

    <asp:CheckBox ID="chkRemove" runat="server"  
           Checked='<%#Convert.ToBoolean(Eval("CommonWord")) %>' 
           OnCheckedChanged="OnCheckedChanged_CommonWord" 
           AutoPostBack="true"
           onclick='return OnClientCheckChanged("Are you sure you want to do this?",this);' />
    <script>
        function OnClientCheckChanged(prompt,source) {
            if (confirm(prompt)){
                __doPostBack("'" + source.id + "'", '');
                return true;
            }
            else {
                return false;
            }
        }
    </script>
    

    当实际单击 CheckBox 时,它将触发您的 confirm() 提示,并根据结果,它会触发显式 PostBack(通过讨厌的 __doPostBack() 调用,否则它不会做任何事情。

    我不是__doPostBack() 电话的忠实拥护者,但这似乎是一个合适的解决方案。

    【讨论】:

    • 抱歉,我对Javascript不是很熟悉,我添加了你提供的函数,它开始抱怨''作为_doPostBack的第二个参数所以我把它改成了“”。现在它说的是实际的函数错误 - 需要标识符。有任何想法吗?
    猜你喜欢
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 2012-05-19
    • 2019-01-24
    • 2015-02-02
    • 1970-01-01
    • 2013-01-18
    • 2012-11-09
    相关资源
    最近更新 更多