0

我们正在使用 VS2010 中的 ReportViewer (rdlc) 控件在 Azure Web 应用程序中显示报告,该控件运行良好。最近,我的客户要求我捕获 ReportViewer 的打印事件并在服务器上记录一个条目。我已经用打印按钮钩住了。当我在本地环境中运行 Web 应用程序时,这非常有效。但是,在 Azure 上,永远不会从客户端调用 Ajax 方法。请建议怎么做?Azure 环境中的 Ajax 有限制吗?

我在后面的代码中注册 Page_Load 上的页面

protected void Page_Load(object sender, EventArgs e)
{
  Ajax.Utility.RegisterTypeForAjax(typeof(Pages.Report));

  ImageButton btnPrint = new ImageButton();
  btnPrint = ((ImageButton)(this.FindControl("ctl00$" + ReportViewer1.ClientID.Replace("_","$") + "$ctl06$ctl06$ctl00$ctl00$ctl00")));
  btnPrint.Attributes["onclick"] += "attachEventForPrint();";
}

 [AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]

 public static void LogEvent(int pLoggingEvent)
 {
  // Addded logic to log event
 }

并且在 ASPX 文件中,在 JS 中添加了以下功能

 function attachEventForPrint() {
   if (typeof (Report) != "undefined") {
                Report.LogEvent(4);
            }
        }
4

1 回答 1

1

好消息是,我认为使用 ajax 控件没有任何限制——我已经使用了一些,而且它们都可以正常工作。

一些需要检查的事情可能是:

  • 您可以使用 Fiddler 查看 HTTP 跟踪 - 单击打印按钮时是否向服务器发送请求?
  • 您可以使用 javascript 调试器检查出现 attachEventForPrint 时是否没有报告错误?
  • “状态”是否有任何问题 - 尤其是会话存储?

要检查的另一件事是是否有更易于维护的方式来访问打印按钮 -"$ctl06$ctl06$ctl00$ctl00$ctl00"看起来它现在或将来某个时候正在自找麻烦

于 2011-05-03T10:59:20.403 回答