FreeTextBox y UpdatePanel (error renderizado)

El ambiente de trabajo sencillo, un ABM de una tabla con texto enriquecido asi que nos propusimos usar FTB (FreeTextBox), lo colocamos en dentro de un FormView y lo testeamos correctamente, hasta que se nos ocurrio la gran idea de insertar un UpdatePanel de ASP.NET Ajax, la ley de murphy se cumplia nuevamente, no renderizaba el contenido correctamente, el control se armaba pero el texto interior ni noticias.

Sintoma 1: El control lo visualizamos pero sin el contenido.
Sintoma 2: No respondia a ningun evento en sus botones o elementos (tab de modo html y modo diseño). Esto nos da un indicio que los elementos/recursos de script no estaba cargándose

Tenia algo asi…simple

       <FTB:FreeTextBox ID="ftbTramiteRequisitos" runat="server"
           Text='<%# Bind("TramiteRequisitos") %>'>
       </FTB:FreeTextBox>
FreeTextBoxYUpdatePanelErrorRender002

Probe con

       <FTB:FreeTextBox ID="ftbTramiteRequisitos" runat="server"             
            Text='<%# Bind("TramiteRequisitos") %>' 
            ButtonImagesLocation="externalFile" 
            JavaScriptLocation="externalFile" 
            ToolbarImagesLocation="externalFile"   
            SupportFolder="~/aspnet_client/FreeTextBox/"
            ScriptMode="InPage"  >
        </FTB:FreeTextBox>

y otras tanta alternativas más…Pero no queria colocar en la carpeta /aspnet_client/FreeTextBox/ los archivos necesarios (imagenes, .js, . xml) ya que para ASP.NET 2.0 todos los recursos necesarios estan embebidos en el mismo componente.

Al final googleando un poco, di con dos soluciones:

  1. Insertar dentro de un iframe, la cual no me convencia por lo compleja 😉 (aquí esta), y otra version no tan compleja aquí
  2. Registrar manualmente los scripts, que justamente alguien ya lo realizo (en los foros de FTB)

Entonces la solución:

  • El control: Lo dejo como estaba 
           <FTB:FreeTextBox ID="ftbTramiteRequisitos" runat="server"
               Text='<%# Bind("TramiteRequisitos") %>'>
           </FTB:FreeTextBox>
    Este control esta dentro de un formview, y este dentro de un UserControl
    (otras versiones aqui deberia estar todas las propiedades detalladas, pero en versiones recientes ya tiene asignadas valores predeterminados)
     
  • Y en la pagina donde utilizo el UserControl
     
    Public Overrides Sub RegisterStartupScript(ByVal key As String, ByVal script As String)
        ScriptManager.RegisterStartupScript(Me, GetType(Page), key, Replace(Replace(script, "FTB_AddEvent(window,'load',function () {", ""), "});", ""), False)
    End Sub


    Public Overloads Sub RegisterOnSubmitStatement(ByVal key As String, ByVal script As String)
        ScriptManager.RegisterOnSubmitStatement(Me, GetType(Page), key, script)
    End Sub


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            Page.ClientScript.RegisterClientScriptInclude("FTBFreeTextBox", VirtualPathUtility.MakeRelative(Request.Path, "~/aspnet_client/FreeTextBox/FTB-FreeTextBox.js"))
            Page.ClientScript.RegisterClientScriptInclude("FTBUtility", VirtualPathUtility.MakeRelative(Request.Path, "~/aspnet_client/FreeTextBox/FTB-Utility.js"))
            Page.ClientScript.RegisterClientScriptInclude("FTBToolbarItems", VirtualPathUtility.MakeRelative(Request.Path, "~/aspnet_client/FreeTextBox/FTB-ToolbarItems.js"))
            Page.ClientScript.RegisterClientScriptInclude("FTBPro", VirtualPathUtility.MakeRelative(Request.Path, "~/aspnet_client/FreeTextBox/FTB-Pro.js"))

        End If
    End Sub
 
      Esto tambien podrias estar y seria convenite en la MasterPage
     (la ubicacion de estos archivos es por defecto ~/aspnet_client/FreeTextBox/)
      Tendras que copiar los archivos de recursos (imagenes, js, xml) (esto viene al descargar FTB), generalmente busca en esta ubicación
              ~/aspnet_client/FreeTextBox/
       Pero la puedes cambiar pero tendras que setear estas propiedades (ademas de cambiar SupportFolder si cambias la carpeta)
     
    <FTB:FreeTextBox runat="server"
        Id="ftbTramitesRequisitos" SupportFolder="~/miCarpeta/FreeTextBoxRecursos" 
        JavaScriptLocation="ExternalFile"
        ToolbarImages="ExternalFile"
        ButtonImagesLocation="ExternalFile"  />

  Esta parte lo hice con archivos externos. Pero desde la version 3.0 viene todo esto embebido en la .dll y solo hay que agregar el handler en el web.config solo si estas trabajando con .NET 1.1

<httpHandlers>
     <add verb="GET" path="FtbWebResource.axd" type="FreeTextBoxControls.AssemblyResourceHandler, FreeTextBox" />
    </httpHandlers>
 

2 comentarios sobre “FreeTextBox y UpdatePanel (error renderizado)”

  1. Hola descarge el control freetextBox, y no he logrado poder incorporarlo a mi proyecto, hago la referencia a la dll, pero nose que mas tengo que hacer… porfavor si alguien sabe que me lo diga,…pliss

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *