FreeTextBox et UpdatePanel

Publié le 17 juillet 2008 par Jeremy.jeanson

Si vous avez déjà tenté d'utiliser le control FreeTextBox et notre ami l'UpdatePanel vous vous êtes certainement rendu compte que leur cohabitation se faisait plutôt mal... voir même pas du tout. Il y a tout simplement un petit souci d'enregistrements de fichiers javascripts qui ne se font pas.

Après plusieurs tests, page de codes et divers tours sur des forums exposant le problème je suis arrivé à trouver un code fonctionant quelle que soit la situation.

Le voici:

C#
   #region FreeTextbox code

   /// <summary>
   /// FreeTextbox in update panel workaround
   /// </summary>
   public new void RegisterOnSubmitStatement(string key, string script)
   {
   ScriptManager.RegisterOnSubmitStatement(this, typeof(Page), key, script);
   }

   /// <summary>
   /// FreeTextbox in update panel workaround
   /// </summary>
   [Obsolete]
   public override void RegisterStartupScript(string key, string script)
   {
   string newScript = script.Replace("FTB_AddEvent(window,'load',function () {", "").Replace("});", "");
   ScriptManager.RegisterStartupScript(this, typeof(Page), key, newScript, false);
   }

   #endregion


   protected void Page_Load(object sender, EventArgs e)
   {
   if (!Page.IsPostBack)
   {
   Page.ClientScript.RegisterClientScriptInclude("FTB-FreeTextBox", VirtualPathUtility.MakeRelative(Request.Path, "~/FreeTextBox/FTB-FreeTextBox.js"));
   Page.ClientScript.RegisterClientScriptInclude("FTB-Utility", VirtualPathUtility.MakeRelative(Request.Path, "~/FreeTextBox/FTB-Utility.js"));
   Page.ClientScript.RegisterClientScriptInclude("FTB-Toolbars", VirtualPathUtility.MakeRelative(Request.Path, "~/FreeTextBox/FTB-ToolbarItems.js"));
   Page.ClientScript.RegisterClientScriptInclude("FTB-ImageGallery", VirtualPathUtility.MakeRelative(Request.Path, "~/FreeTextBox/FTB-ImageGallery.js"));
   Page.ClientScript.RegisterClientScriptInclude("FTB-Pro", VirtualPathUtility.MakeRelative(Request.Path, "~/FreeTextBox/FTB-Pro.js"));
   }
   }

ASPX

<%@ Register TagPrefix="FTB" Namespace="FreeTextBoxControls" Assembly="FreeTextBox" %>

<FTB:FreeTextBox ID="FreeTextBoxEdit" runat="server"
 JavaScriptLocation="ExternalFile"
 ButtonImagesLocation="ExternalFile"
 ToolbarImagesLocation="ExternalFile"
 SupportFolder="~/FreeTextBox/"
 Text='<%# Bind("texte") %>'>
</FTB:FreeTextBox>