viernes, 15 de enero de 2016

Mostrar un Loading Panel al cargar y al procesar los datos que consuman mucho tiempo de proceso

Primero hay que crear el Panel como en el siguiente ejemplo:

<dx:ASPxLoadingPanel ID="loadingPanel" ClientInstanceName="loadingPanel" runat="server" Modal="true"
        Width="70%" Height="30px" Text="Se está procesando su petición; por favor no abandone la sesión porque podría tener inconsistencia en sus datos..." >
    </dx:ASPxLoadingPanel>

Crear una función con Javascript que muestre el panel :

 function showLoadingPanel() {
        loadingPanel.Show();
    }

Si se desea que solo muestre el panel encima de un control como el ASPxGridview se puede usar el método ShowInElementByID del Panel:

function showLoadingPanel() {
        loadingPanel.ShowInElementByID(grvHarnessItems.name);
    }

Crear una función con Javascript que esconda el panel:

 function OnControlsInitialized(s, e) {
        setTimeout(function () {
            loadingPanel.Hide();
        }, 1000);
    }


Mostrar el panel al inicio de la página si esta tiene que cargar muchos datos y se tardará más de 2 segundos. (Creo que es buena práctica hacer que las consultas a la base de datos consuman menos de 2 segundos, pero si esto no es posible recomiendo mostrar el panel):

<script type="text/javascript">
            showLoadingPanel();
    </script>

Mostrar el panel al presionar cada botón que vaya a efectuar una tarea que consuma más de 2 segundos, llamando al método que muestra el Panel, usando el método Click del lado del cliente:

<dx:ASPxButton ID="btnSave" runat="server" OnClick="btnSave_Click" 
        Text="Grabar" Width="120px" style="display:inline-block;">
        <ClientSideEvents Click="function(s, e) {
showLoadingPanel();
}" />
        <Image Url="~/Content/Images/Save.png" Width="24px">
        </Image>
    </dx:ASPxButton>

Usar el objeto ASPxGlobalEvents para detectar cuando todos los controles han sido inicializados y esconder el Panel con la función creada para tal evento:

 <dx:ASPxGlobalEvents ID="ge" runat="server">
        <ClientSideEvents ControlsInitialized="OnControlsInitialized" />
    </dx:ASPxGlobalEvents>

Mover mensajes seleccionados a un personal folder en Oulook 2016

Este es un ejemplo de como mover los mensajes seleccionados a un personal folder (pst) en Outlook 2016 usando VBA. Sub MoveInbox()     Mov...