当Ajax工具包控件动态添加到更新面板时,它存在问题。 我有测试用户控件(UC_Test.ascx),里面有一个带HtmlEditorExtender的文本框:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="UC_Test.ascx.cs" Inherits="UC_Test" %>
<asp:TextBox runat="server" ID="textbox1" CssClass="textbox" Height="40px"/>
<asp:HtmlEditorExtender runat="server" TargetControlID="textbox1"></asp:HtmlEditorExtender>
在另一个控件上有更新面板,其中包含两个元素(button&amp; PlaceHolder)
<asp:UpdatePanel runat="server">
<ContentTemplate>
<asp:Button Text="Add" runat="server" OnClick="button_click" />
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</ContentTemplate>
</asp:UpdatePanel>
并且按钮点击事件的代码是:
protected void button_click(object sender, EventArgs e)
{
PlaceHolder1.Controls.Clear();
PlaceHolder1.Controls.Add(LoadControl("~/UC_Test.ascx"));
}
现在,当单击该按钮时,控件(UC_Test)将成功添加到ajax模式的占位符,但未加载HtmlEditorExtender(css文件和图像)的资源。 我通过添加的控件制作快照:
当您看到图像时,htmlEditorExtender的图标(例如复制,粘贴,...)没有被加盖。!
答案 0 :(得分:0)
这个问题有一个解决方法。在主页面上的scriptmanager和第一个updatepanel之间放置一个不可见的面板,并在其中放置一个虚拟文本字段和HtmlEditorExtender。这将使动态加载控件的HtmlEditorExtenders正确呈现。
显然,扩展程序需要在首次加载时加载某些资源。母版页上的虚拟对象将使这些资源可用于此后创建的扩展器。
t010t在ajaxcontroltoolkit.codeplex上发布的解决方案。
答案 1 :(得分:0)
我知道这已经有一年了,但我有同样的问题。在我的例子中,有一个CSS类被全局应用于所有按钮。
以下是。
background: #666666;
Firefox firebug插件显示这导致css呈现为。
background: none repeat scroll 0 0 #e6e6e6;
当我禁用这行css时,按钮会显示出来。为了解决这个问题,我不得不改变。
background: #666666;
到
background-color: #666666;
此后按钮正确呈现。这可能无法解决每个人的问题。但在某些情况下可能会这样。