[CLOSED] [1.0] User Control loaded several times

  1. #1

    [CLOSED] [1.0] User Control loaded several times

    Good morning, I have the following problem:
    I have a list that is loaded from a store. The store has an event "OnRefreshData" where it is loaded. At "Init" of this list I do a "load control" of another form.

    Take a look at this code (feel free to load the store as you want)

    LIST Design
    ------------------------------------------------------------------
    
    <!-- Grid -->
    <ext:GridPanel Title="Convocatorias de Ayudas"  EnableColumnHide="false"  AutoExpandColumn="Descripcion" ID="Objeto_GridPanel" AutoHeight="true"  runat="server" Frame="False" TrackMouseOver="true" >
        <Store>
     
        <%--Store--%>
        <ext:Store ID="Objeto_Store" runat="server" SerializationMode="Simple" IgnoreExtraFields="true" OnRefreshData="Store_RefreshData" RemoteSort="true" RemoteGroup="true" >
            <DirectEventConfig IsUpload="true" />
            <Proxy>
                <ext:PageProxy />
            </Proxy>
            <AutoLoadParams>
                <ext:Parameter Name="start" Value="0" Mode="Raw" />
            </AutoLoadParams>
            <Reader>
                <ext:JsonReader>
                    <Fields>
                            <ext:RecordField Name="Id"> </ext:RecordField>
                            <ext:RecordField Name="Codigo"> </ext:RecordField>
                             
                    </Fields>
                </ext:JsonReader>
            </Reader>
            <SortInfo Field="Id" Direction="DESC" />
            <Listeners>
                <LoadException Handler="Ext.MessageBox.alert('Error al cargar los datos', response.statusText);" />
            </Listeners>
        </ext:Store>
        </Store>
        <%--Topbar--%>
        <TopBar>
            <ext:Toolbar ID="Objeto_GridToolbar" runat="server">
                <Items>
     
                    <%--NUEVO--%>
                    <ext:Button ID="Button_Nuevo" Text="Nuevo" Icon="Add" runat="server" StandOut="true">
                        <DirectEvents>
                            <Click OnEvent="Objeto_Nuevo">
                            </Click>
                        </DirectEvents>
                    </ext:Button>
                    <ext:ToolbarSeparator ID="ToolbarSeparator1">
                    </ext:ToolbarSeparator>
     
                    
                        
                </Items>
            </ext:Toolbar>
        </TopBar>
       
        <%--Columnas--%>
        <ColumnModel ID="ObjetoGrid_ColumnModel" runat="server" >
            <Columns>
           
                 <%--Codigo--%>
                <ext:Column ColumnID="Codigo" Header="Cod."  Sortable="true" DataIndex="Codigo"  Align="Center" Width="60" Groupable="true"/>
               
                
                <%--Id--%>
                <ext:Column ColumnID="Id" Header="Id"  Sortable="true" DataIndex="Id" Hidden="true" Align="Center"/>
              
     
                
                <%--Botones--%>
                <ext:CommandColumn  Width="85" ColumnID="ColumnaAccciones"  Header="Acciones">
                    <Commands>
                       
                        <ext:GridCommand Icon="ApplicationViewDetail" CommandName="Detalles">
                            <ToolTip Text="Detalles" />
                        </ext:GridCommand>
     
                        <ext:CommandSeparator />
     
                        <ext:GridCommand Icon="NoteEdit" CommandName="Editar">
                            <ToolTip Text="Editar" />
                        </ext:GridCommand>
     
                        <ext:CommandSeparator />
     
                        <ext:GridCommand Icon="Delete" CommandName="Borrar">
                            <ToolTip Text="Borrar" />
                        </ext:GridCommand>
     
                    </Commands>
                                          
                </ext:CommandColumn>
               
            </Columns>
        </ColumnModel>
       
        <%--DirectEvents--%>
        <DirectEvents>
            <Command OnEvent="Grid_Command">
                <ExtraParams>
                    <ext:Parameter Name="Id" Value="record.data.Id" Mode="Raw" />
                    <ext:Parameter Name="CommandName" Value="command" Mode="Raw" />
                </ExtraParams>
                <EventMask ShowMask="true" Msg="Obteniendo datos..." />
                <Confirmation BeforeConfirm="if(!(command == 'Borrar')) return false;" ConfirmRequest="true"
                Message="¿Está seguro de quere eliminar el elemento?" Title="Eliminar" />
            </Command>
        </DirectEvents>
       
        <%--SelectionModel--%>
        <SelectionModel>
            <ext:RowSelectionModel ID="ObjetoGrid_RowSelectionModel" runat="server" />
        </SelectionModel>
       
        <%--Barra estado--%>
        <BottomBar> 
                <ext:PagingToolbar ID="ObjetoGrid_PagingToolBar" runat="server" StoreID="Objeto_Store" EmptyMsg="No se encontraron registros" DisplayInfo="true"  PageSize="20"  StyleSpec="padding-right:35px;" />
        </BottomBar>
       
        </ext:GridPanel>
    <!-- Fin Grid -->
    LIST Code
    ------------------------------
    #Region "Init"
     
        'Init
        Private Sub Page_Init(ByVal sender As Object, ByVal e As Global.System.EventArgs) Handles Me.Init
     
     
     
            'Cargamos las ventanas modal
            loadWindowControls()
     
            'Grid Paginado
            Dim paginado As Integer = 20
            If Not IsPostBack Then
                Objeto_Store.AutoLoadParams.Add(New Ext.Net.Parameter("limit", 20))
                ObjetoGrid_PagingToolBar.PageSize = paginado
            End If
     
             
        End Sub
     
        'Carga el control de FORM 
        Private Sub loadWindowControls()
     
            'Añadimos el control del FORM
            Dim ctrForm As Control = LoadControl("ConvocatoriasFormControl.ascx")
            ctrForm.ID = "Objeto_FormControl"
            Me.Controls.Add(ctrForm)
     
            'Pasamos el Store al Form
            Dim Objeto_Store As Ext.Net.Store = Me.FindControl("Objeto_Store")
            Me.FindControl("Objeto_FormControl").GetType.GetProperty("GridStore").SetValue(Me.FindControl("Objeto_FormControl"), Objeto_Store, Nothing)
     
     
     
        End Sub
     
    #End Region
    FORM Design
    ------------------------------
    
    <ext:Window ID="Objeto_Window" runat="server" Icon="LayoutContent" Title="Convocatoria de Ayuda"
        AutoShow="false" Modal="true" Hidden="true" Layout="Fit" Collapsible="false"
      Width="670" Height="500" AutoScroll="true">
        <Content>
             
                                                                    <ext:ComboBox ID="ComboTipo" runat="server" FieldLabel="Tipo" AllowBlank="false"                                                                   CausesValidation="true" >
                                                                    </ext:ComboBox>
                                                                   
                </ Content >
                <Buttons>
                    <ext:Button ID="Save_Button" runat="server" Text="Guardar" Icon="Disk">
                        <DirectEvents>
                            <Click OnEvent="saveForm" Before="var valid= #{Objeto_FormPanel}.getForm().isValid(); if(valid){#{Objeto_StatusBar}.showBusy('Guardando formulario...');} return valid;"
                                IsUpload="true">
                                <EventMask ShowMask="true" MinDelay="1000" Target="CustomTarget" CustomTarget="={#{Objeto_FormPanel}.getEl()}" />
                            </Click>
                        </DirectEvents>
                    </ext:Button>
     
                </Buttons>
                <BottomBar>
                    <ext:StatusBar ID="Objeto_StatusBar" runat="server" DefaultText="Complete el formulario">
                        <Plugins>
                            <ext:ValidationStatus ShowText="El formulario contiene errores (Haga click para ver los detalles)."
                                ID="Objeto_ValidationStatus" runat="server" FormPanelID="Objeto_FormPanel" ValidIcon="Accept"
                                ErrorIcon="Exclamation" />
                        </Plugins>
                    </ext:StatusBar>
                </BottomBar>
            </ext:TabPanel>
        </Content>
    </ext:Window>
    The problem is that:

    1 First load the ?init? event of the list
    2 Load ?init? event of the form
    3 Load again ?init? event of the list
    4 Load again ?init? event of the form
    5 Run event "OnRefreshData" and load data.

    How I can do to load "init" event (list & form) once time? (We think the problem is coming from AutoLoad at store)
    Thanks in advice
    Last edited by Daniil; Jul 07, 2011 at 11:31 AM. Reason: [CLOSED]
  2. #2
    Hi,

    Init event is contrled by ASP.NET, we have no ability to prevent or fire it

    1 First load the ?init? event of the list
    2 Load ?init? event of the form
    It is called during initial page load

    3 Load again ?init? event of the list
    4 Load again ?init? event of the form
    5 Run event "OnRefreshData" and load data.
    You use page proxy therefore the store initiates additional request to the page for retrieve a data. During that request the page execute normal page life cycle. It is correct because all dynamic controls must be recreated for event handling
  3. #3
    Hi again,

    You use page proxy therefore the store initiates additional request to the page for retrieve a data.
    Are there another way to load a store without using a page proxy to prevent that(3,4,5)?
  4. #4
    Hi,

    Are there another way to load a store without using a page proxy to prevent that(3,4,5)?
    Yes, just don't use any proxy and bind a data during initial page load, please see
    https://examples1.ext.net/#/GridPanel/ArrayGrid/Simple/

    Please note that (3,4,5) will be called for any request (DirectEvent, DirectMethod or simple ajax request) because page always executes full page lige cycle. Therefore removing proxy doesn't prevent it completly.
  5. #5
    Ok, I'll try other things, thanks for your help!

Similar Threads

  1. Replies: 7
    Last Post: May 15, 2012, 11:27 AM
  2. Replies: 2
    Last Post: Dec 08, 2011, 1:00 PM
  3. [CLOSED] Dynamic loaded user control height problem
    By Suntico in forum 1.x Legacy Premium Help
    Replies: 10
    Last Post: Jun 27, 2011, 8:54 AM
  4. Replies: 32
    Last Post: Jan 11, 2011, 9:53 AM
  5. Replies: 2
    Last Post: Apr 15, 2010, 5:33 AM

Posting Permissions