【问题标题】:Prevent an asynchronous postback from gridview with javascript使用 javascript 防止来自 gridview 的异步回发
【发布时间】:2013-08-02 15:10:02
【问题描述】:

我在更新面板中有一个gridview,gridview 的第一列中有一个复选框。当我第一次创建它时,它运行良好。该复选框设置为 AutoPostBack 并导致异步回发,我可以在其中处理数据并刷新 gridview 而不会影响页面的其余部分。

但是,我需要在客户端的页面上测试某个条件,并向用户显示一个确认框,上面写着“此人不是为此设置的。确定要继续吗?'

我最初是通过在 gridview 的 RowDataBound 事件中添加一些这样的代码来做到这一点的;

CheckBox cb = (CheckBox)e.Row.FindControl("myCheckBox");
cb.Attributes.Add("onclick", "return check('" + ContactName + "');");

并且有一个类似于以下内容的javascript函数:

function check(ContactName)
{
  if (document.getElementById('Listed') == false)
  {
  if (confirm('This person is not listed, are you sure you want to continue?'))
    {
    return true;
    }
    return false;
  }
}

请忽略上面代码中的拼写错误,如果是凭记忆输入的。问题是,它有效。如果我的局部变量 Listed 为 false,它会弹出确认框。

问题是,如果您在确认框中选择“确定” - 由复选框生成的回发(应该是异步的,因为它在 ChildrenAsTriggers = true 的更新面板内)被取消。我必须在 javascript 确认后调用 __doPostback 才能发生回发。但是,我得到的是完整的回发,而不是我想要的异步回发。

所以,我的问题是,如何防止来自带有 javascript 确认的复选框的异步回发,这样,如果您在 javascript 确认中选择 Okay,就会发生异步回发。

正如我所说,目前,我可以让它工作的唯一方法是在用户点击 Okay 后进行完整的回发。

【问题讨论】:

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


    【解决方案1】:

    此位置的链接讨论了如何通过 JavaScript 取消异步回发:

    http://www.ajaxtutorials.com/ajax-tutorials/cancel-asynchronous-postback-in-c/

    重要的部分在这里:

    <script type="text/javascript">
    var instance = Sys.WebForms.PageRequestManager.getInstance();
    instance.add_initializeRequest(instance_initializeRequest);
    
    function instance_initializeRequest(sender, args) {
        if (args.get_postBackElement().id == 'btn_Cancel') {
            instance.abortPostBack();
            alert('Postback has been cancelled. Time will not be updated.');
        }
    }
    </script>
    

    【讨论】:

      【解决方案2】:

      Garrison Neely 提供的方式应该适合你。

      回发和异步回发的区别在于异步只是在提交之前修改表单的一些值,然后再将它们设置回来。这些值指示哪个控件使用什么样的信息发起请求,还有一些目标信息用于将响应 html 呈现到哪个 iframe 中。我只是在这里提出一些我的想法,不同情况下的实现会有所不同。

      【讨论】:

        猜你喜欢
        • 2013-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多