我在CRM2011中有一个报告,它是一个上传的RDL文件。当我尝试运行它时,我收到错误'系统未定义'。当我查看Debugger for Viewer.aspx时,它会显示
Sys.WebForms.PageRequestManager._initialize
('scriptmanager','form1',
['freeportViewer$ReportViewer','',
'freeportViewer$DocMap','',
'freeportViewer$ct109$ReportArea',''],[],
['freeportViewer$ct109$ReportControl$ct100',''],1000,
'');
x Sys未定义
知道这里有什么问题吗?
答案 0 :(得分:0)
原因是脚本尚未加载,
当浏览器运行该代码时,它会期望在某处定义Sys.WebForms.PageRequestManager。某处恰好位于从脚本标记加载的其他脚本中,如下所示:
由于您使用的是MSCRM报告Viewer.aspx,我怀疑此aspx文件是否已编辑,或者可能是浏览器问题。保留原件的副本,然后尝试以下操作:
如果浏览器无法加载这些脚本,则脚本引擎无法找到Sys,Sys.WebForms,Sys.WebFormsPageRequestManager的定义,从而找不到错误。
如果您使用ASP.NET AJAX ScriptManager控件向页面添加其他脚本,那么您也可以免受类似问题的影响。 ScriptManager将确保您的脚本在UI之前呈现,这会强制浏览器在呈现UI之前加载它们。
类似的东西:
function hasloaded()
{
if(typeOf(Sys) == 'undefined'){
alert('Please try again. The page hasn't finished loading. try refreshing the page.');
return false;
} else {
return true;
}
}
if(hasLoaded()){
//work with Sys.
}
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httpHandlers>
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
将此代码放在<system.web>