none
Ajaxficar un UserControl (aspx)

    Question

  • Hola, 

    Tengo un problema con ajax. Estoy trabajando con ASP .Net. Tengo una pagina que contiene un Web User Control(.ascx). Dentro del User control estoy usando un RadPanelBar. En el primer RadPanelItem del RadPanelBar, tengo un DropDownList de asp, y tengo un RadTreeView. Dependiendo de la selecion del DropDownList, cargo diferentes datos en RadTreeView. Inlcuso con una opcion oculto el RadTreeView.
    Todo funciona de maravilla, pero con postBack totales. Lo que quiero es ajaxificarlo.
    Intente usar un RadAjaxPanel dentro del UserControl. Si me ajaxifica el control, desde code behind todo se ejecuta con normalidad, pero los cambios en el UserControl no se reflejan. Intente usar un UpdatePanel de asp, pero tengo el mismo resultado. 

    Tengo un boton asp en la pagina principal que hace postback total. Despues de hacer eso el contenido del user control si muestra los cambios.

     

    Gracias de ante mano por cualquier ayuda o consejo que me puedan dar. 

    Friday, October 22, 2010 9:25 PM

All replies

  • Hola yo utilizo en los controles de usuario utilizo el updatepanel para controlar los refrescaciones de las paginas un ejemplo es: <asp:UpdatePanel Id="UpdatePanel" runat="Server">             <ContentTemplate>                   ***Aca va los objetos que hacen postback***             </ContentTemplate> </ asp:UpdatePanel> http://msdn.microsoft.com/es-es/library/system.web.ui.updatepanel.aspx


    Jiward
    Wednesday, November 17, 2010 2:00 PM
  • Probablemente el problema sea que no estás actualizando el UpdatePanel.  Podrías hacerlo de tresformas:
     
        1. Utilizando el método “Update()” del UpdatePanel desde el código (por ejemplo: UpdatePanel1.Update())
        2. En la página estableciendo que el DropDownList genera que se actualice el UpdatePanel, como te muestro a continuación:
     
    <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true"> 
    <%-- ListItems --%>
    </asp:DropDownList> 
     
    <asp:UpdatePanel ID="UpdatePanel2" runat="server"> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="DropDownList1" EventName="SelectedIndexChanged" /> 
     </Triggers> 
     <ContentTemplate>
      <%-- Contenido --%>
     </ContentTemplate>
    </asp:UpdatePanel>
     
        3. Dejando el DropDownList dentro del UpdatePanel, y estableciendo en el UpdatePanel que los controles “hijo” hacen que sea actualice, algo así:
     
    <asp:UpdatePanel runat="server" ChildrenAsTriggers="true"> 
     <ContentTemplate>
      <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true"> 
      <%-- ListItems --%>
      </asp:DropDownList> 
     
      <%-- Contenido --%>
     </ContentTemplate>
    </asp:UpdatePanel>
     
        Suerte!

    Para el correcto funcionamiento y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido útil por favor Vótala.

    Gustavo A. Cantero
    Scientia® Soluciones Informáticas
    MCP - MCSD - MCTS - MCPD
    http://www.scientia.com.ar
    http://www.programandoamedianoche.com
    http://www.gustavo-cantero.com.ar
    http://twitter.com/ScientiaIT
    http://facebook.com/ScientiaIT
    Wednesday, November 17, 2010 2:24 PM
  • Cuando utilizas controles de usuario debes utilizar el proxy manager en el usercontrol y el manager en la página que lo contiene, Me explico mejor, veo que estas utilizando controles de telerik en este caso agrega el RadAjaxManagerProxy en usercontrol y configuralo normalmente como configuras el RadAjaxManager, ahora en la pagina aspx solo debes agregar el RadAjaxManager

     

    <telerik:RadAjaxManagerProxy ID="AjaxManagerProxy1" runat="server">
     <AjaxSettings>
      <telerik:AjaxSetting AjaxControlID="DropDownList">
       <UpdatedControls>
        <telerik:AjaxUpdatedControl ControlID="RadTreeView" LoadingPanelID="RadAjaxLoadingPanel2" />    
       </UpdatedControls>
      </telerik:AjaxSetting>
     </AjaxSettings>
    </telerik:RadAjaxManagerProxy>
    
    <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel2" runat="server" Skin='Office2007'>
    </telerik:RadAjaxLoadingPanel>
    
    en el aspx simplemente el control radajaxmanager
    
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"></telerik:RadAjaxManager>
    
    Saludos

     

    • Proposed as answer by Jhonattan__ Friday, November 19, 2010 3:37 AM
    Friday, November 19, 2010 3:33 AM