none
Web Site con Updatepanel y controles ascx. Propiedades del control no responden RRS feed

  • Pregunta

  • Hola a todos. Hace unos días puse otro post y más o menos encontré la respuesta a mi problema, pero sólo fue en parte.

    Como ese post era bastante enrevesado, abro este para comentar la parte para la que aún no he encontrado solución para ver si me pueden echar una mano. Gracias por adelantado.

    El problema es es siguiente:

    Tengo un Web Site (un sitio web, no una aplicación web) con un updatepanel en el que he metido un control de usuario (ascx).

    En dicho control, dependiendo del método al que llame, habilita o deshabilita un botón entre dos de los  que tiene e inserta texto en una etiqueta. Esto en mi proyecto dummy (que es una aplicación o proyecto web) funciona bien, pero en el web site donde debo implementarlo no funciona adecuadamente.

    Trabajo con vb.net y framework 4.0.

    Declaración del control en la página:

        <%@ Register src="~/Controles/Docs/ucDocumentos.ascx" TagName="ucDocumentos" TagPrefix="uc" %>

        <uc:ucDocumentos ID="ucDocs" runat="server" ViewStateMode="Enabled" cargarDoc="True"  />

    y en behind de la página aspx lo cargo así, tras pulsar un botón de la página:

        Me.ucDocs.InicializarControl1(docFirmar) ó Me.ucDocs.InicializarControl2(docFirmar)

    En el ascx tengo esta declaración del control:

        <%@ Control Language="vb" AutoEventWireup="true" CodeFile="ucDocumentos.ascx.vb" Inherits="ucDocumentos" EnableViewState="True" ViewStateMode="Enabled" %>

    y estos son los botones:

        <asp:Button ID="btn1" runat="server" Text="Documento" OnClientClick="Doc(); return false;" CssClass="btn" UseSubmitBehavior="False" meta:resourcekey="btn1" />  
        <asp:Button ID="btn2" runat="server" Text="Documentos en Lote" OnClientClick="DocLote(); return false;" CssClass="btn" UseSubmitBehavior="False" meta:resourcekey="btn2" />

    La etiqueta:  <asp:Label ID="lblListaDocs" runat="server" CssClass="lblListaDocs" />

    Edito: La propiedad EnableViewState de los botones está a true.

    y en el behind del control ascx los siguientes métodos públicos:

        Public Sub InicializarControl1(ByVal doc As Doc)

            Me.btn1.Enabled = True
            Me.btn1.Visible = True
            Me.btn2.Enabled = False
            Me.btn2.Visible = False

            ...

    y

        Public Sub InicializarControl2(ByVal doc As Doc)

            Me.btn2.Enabled = True
            Me.btn2.Visible = True
            Me.btn1.Enabled = False
            Me.btn1.Visible = False

            ...

    y para el texto de la etiqueta:

        Me.lblListaDocs.Text = "texto..."

    Lo dicho, cuando lo invoco con cualquiera de las dos opciones, los dos botonos están habilitados. Parece que no hiciese caso a esas propiedades que se ejecutan en el behind del ascx. y "a priori" no parece que sea algo muy complicado lo que necesito hacer.

    También me ha pasado, desde ese mismo ascx, intentando aplicar una clase a un div, o intentando cambiar alguna etiqueta de la cabecera (meta del header) de la página desde el code behind del control. Todas estas operaciones desde una aplicación web si me deja y desde mi website no.

    ¿qué puede ser?

    ¿Alguien me puede echar una mano?

    Muchas gracias. Saludos, Héctor.



    • Editado sanmolhec martes, 13 de junio de 2017 12:13 añadir información
    • Cambiado Enrique M. Montejo miércoles, 14 de junio de 2017 7:07 Desarrollo web.
    lunes, 12 de junio de 2017 14:53

Respuestas

  • Por lo que he estado viendo, parece que el problema vuelva a ser por tener el control dentro del updatepanel.

    Si se desencadena un evento sí funcionan y se cambian la visibilidad y demás de los controles, pero cuando se llama a un método público no hace caso.

    ¿Alguna idea de cómo podría arreglarlo?

    Gracias. Saludos, Héctor.

    miércoles, 14 de junio de 2017 7:52