81 messaggi dal 16 ottobre 2006
Salve, sto sviluppando un'applicazione ASP.NET con il framework 3.5 SP1 ed ho un problema con il componente AjaxComboBox.

Nella pagina aspx ho vari AjaxComboBox che si aggiornano automaticamente man mano che l'utente li seleziona (funzionalità simile ai filtri di Excel) e per fare ciò ho impostato l'attributo AutoPostBack=true su ciascun componente.

Il problema che ho è che il postback impiega un pò di tempo ad aggiornare tutti i dati in ciascun AjaxComboBox, pertanto, nel frattempo volevo far vedere una popup che indichi all'utente che c'è in corso un'operazione, ma è necessario farla vedere prima che avvenga la richiesta al server con il postback.

Googoleggiando un pò su vari forum, ho trovato indicazioni circa l'aggiunta dell'attributo OnChange al componente, ma purtroppo non funziona, neanche disabilitando l'autopostback.

Avete qualche suggerimento ?
81 messaggi dal 16 ottobre 2006
Nessuna idea su come fare ?

La notte mi ha portato consiglio, avrei pensato di sovrascrivere il codice javascript __doUpdate(...) che viene generato automaticamente dal framework all'interno della pagina, mettendoci la chiamata alla funzione che semplicemente fa vedere il loading.

Secondo voi è una cosa fattibile ?
Eventualmente lo fosse, lo dovrei fare da codebehind (tipo nel Page_Load o Page_Init) o stesso da javascript ?
81 messaggi dal 16 ottobre 2006
Risolto, grazie lo stesso.

La soluzione che ho trovato è la seguente:

<script type="text/javascript">
  var oldPostBack;
    var popupLoader;
    
    function showLoading() {
        this.popupLoader = $find('modalPopupExtenderLoader');
        this.popupLoader.show();
        setTimeout('document.images["loaderImage"].src = "./imgs/ajax-loader.gif"', 200);
        document.body.style.cursor='wait';
    }
    
  function redirectPostback() {
    if (typeof __doPostBack != "undefined") {
      oldPostBack = __doPostBack;
      __doPostBack = newPostback;
    }
  }
  
  function newPostback (eventTarget, eventArgument) {
    showLoading();
    return oldPostBack (eventTarget, eventArgument);
  }
  
  window.onload = redirectPostback;
  //window.load = redirectPostback;
    
</script>


Praticamente durante il caricamento della pagina rimpiazzo la funzione __doPostback con un'altra funzione che ho dichiarato io ed all'interno di questa richiamo alla fine il vero __doPostback.

Saluti.
Modificato da mickysantomax il 19 maggio 2011 15.45 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.