Nao*_*aor 5 .net asp.net exception-handling scriptmanager
我有一个页面使用CustomerDetails.ascx.它使用CM.ascx.在里面CM.ascx我使用AJAX Data Controls GridView ID="gdvRecommendation".
有时当我浏览页面时,我得到以下异常:
脚本控件'gdvRecommendation'不是注册的脚本控件.在调用RegisterScriptDescriptors()之前,必须使用RegisterScriptControl()注册脚本控件.
参数名称:scriptControl
CustomerDetails.ascx在其他页面中使用用户控件,效果很好.任何人都可以解释我的问题,解决方案是什么?
编辑:
以下是GridView用法CM.ascx:
<td valign="top" style="height: 150px;">
<div id="divCMMessage"></div>
<div id='divRecommendation' style="width: 100%; display: inline; overflow: auto;">
<ADC:GridView ID="gdvRecommendation" Width="100%" runat="server" CellSpacing="0" CellPadding="3" HorizontalAlign="Right" ShowHeader="false" RowDataBoundEvent="onRowDataBound_gdvRecommendation">
<RowStyle Height="20px" />
<EmptyDataTemplate>no recommendations</EmptyDataTemplate>
<EmptyDataRowStyle HorizontalAlign="Right" BorderWidth="0" />
<Columns>
<ADC:GridViewImageColumn DataImageUrlField="IndImageUrl" HeaderText="" ItemStyle-Width="25px" ItemStyle-HorizontalAlign="Center"></ADC:GridViewImageColumn>
<ADC:GridViewTemplateColumn HeaderText="">
<ItemTemplate>
<asp:Label ID="TreatName" runat="server" Text=""></asp:Label>
</ItemTemplate>
</ADC:GridViewTemplateColumn>
<ADC:GridViewTemplateColumn HeaderText="">
<ItemTemplate>
<asp:Label ID="TreatType" runat="server" Text=""></asp:Label>
</ItemTemplate>
</ADC:GridViewTemplateColumn>
</Columns>
</ADC:GridView>
</div>
</td>
Run Code Online (Sandbox Code Playgroud)
的CustomerDetails.ascx是一个多视图(上MyPage.aspx)的内部.
我自己也有类似的问题,这篇文章帮助我理解了我的错误:
脚本控件'ControlName'不是注册的脚本控件
所以你在这里是因为你有以下错误.
脚本控件'ControlName'不是注册的脚本控件.在调用RegisterScriptDescriptors()之前,必须使用RegisterScriptControl()注册脚本控件.
参数名称:scriptControl
我自己已经在谷歌上做了相当多的谷歌搜索,网上有很多解决方案.不幸的是,这些都是特定于场景的解决方案.有些人得到他们的答案,而其他人,像我一样,没有.
回答:
您正在更改页面生命周期错误阶段的控件的可见性.
描述:
如果要更改控件的可见性,则应始终在PreRender事件期间或之前执行此操作.如果您之后(即在异步任务的End处理程序中或在PreRenderComplete期间)执行此操作,您可能会遇到此问题.
对于诸如按钮或文本框之类的简单控件,这不是问题.但它会对网格等控制产生不利影响.
当我说改变可见性时,它可能是以下任何一种情况
原因:
纯粹根据我的理解,如果没有向用户显示,ASP.NET不会呈现与控件相关的脚本或HTML.异常中提到的脚本控件的注册似乎发生在生命周期的早期阶段.如果在此阶段看不到控件,则会跳过该控件的注册.如果它在后一点可见,那么你就可以在没有相关脚本的情况下获得控件.
无论如何这是我所理解的.我可能错了.但是,如果您遇到这个问题,它肯定会帮助您检查哪些控件正在改变生命周期不同点的可见性.您可以通过执行此操作来确定您的具体问题,然后自行提出解决方案.
希望这些信息可以帮助一些人.
| 归档时间: |
|
| 查看次数: |
13849 次 |
| 最近记录: |