• 使用Ajax后,原来导出功能失败的解决方法


    问题描述:

        我们的产品在Ajax后(使用微软的UpdatePanel),其中的导出功能出现错误。因为导出功能使用了Response直接输出内容,而Ajax的异步方式对此不能解析导致出现错误。

    解决过程:
        在网上找了一下,可以使用这个 http://forums.microsoft.com/china/ShowPost.aspx?PostID=2732578&SiteID=15  的方法来解决。但是,如果你的按钮时动态创建的,或者在模板中,这个帖子的方法也不能解决问题。 这个里面的内容虽然没有能解决我的问题,但是给了我一个思路,既然不能使用Ajax的方式来请求,那么就使用PostBack的方式。

    解决方法:

         1、原来的导出按钮增加 OnClientClick事件。
            btnExport.OnClientClick = "return AutoForm_Export('PostBackEventTarget_IsExport');";
         2、客户端增加javascript函数AutoForm_Export。
            function AutoForm_Export(postBackEventTarget)
            {
               WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(postBackEventTarget, "", true, "", "", false, true))    ;           
                return false;
            }

         3、在服务器端根据Request["__EVENTTARGET"] 来判断是否是导出事件。注意下面红色字体的注释   

            if (Page.Request["__EVENTTARGET"] != null)
            {
                            bool isInAsyncPostBack = false;
                            ScriptManager sm = ScriptManager.GetCurrent(Page);
                            if (sm != null)
                            {
                                isInAsyncPostBack = sm.IsInAsyncPostBack;
                            }
                            if (isInAsyncPostBack )
                            {
                                /*
                                一定要进行判断是否是使用Axaj进行异步请求,否则在点击导出按钮以后,再进行其它Ajax请求, Page.Request["__EVENTTARGET"] 会保留原来的值,这样就错误判断了。
                                */
                                _isExport = false

                            }
                            else
                            {
                                string postBackEventTarget = Page.Request["__EVENTTARGET"].ToString();
                                if (postBackEventTarget == "PostBackEventTarget_IsExport")
                                { 
                                    _isExport = true;
                                }
                                else
                                    _isExport = false;
                            }
                        }
                        else
                            _isExport = false;

                }

    其他:
         暂时没有找到其他的方法,如果您有更好的方法,请多多指教!

    ========================================================

    比sharepoint更强大的表单功能,图形化的流程设计,与asp.net完美结合,支持vs.net编程扩展

    ========================================================

  • 相关阅读:
    zoj 3632 Watermelon Full of Water
    将字符串切割成数组 componentsSeparatedByString
    paip.C#.NET多线程访问 toolStripStatusLabel
    EBS后台取消死锁检查代码和取消死锁会话步骤经验
    Java泛型深入题目
    Win7下BootCamp蓝屏问题解决方案二
    一步步开发 Spring MVC 应用
    批处理获取U盘、可移动硬盘的盘符
    一种松耦合的分层插件系统的设计和实现
    分享一个开源的批量修改VC工程属性的小工具
  • 原文地址:https://www.cnblogs.com/chegan/p/1241808.html
Copyright © 2020-2023  润新知