Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Απ:AJAX TabContainer & PostBacks

  •  31-01-2007, 15:38

    Απ:AJAX TabContainer & PostBacks

    Σήμερα αφιέρωσα λίγο ακόμα χρόνο για να το ψάξω περισσότερο.

    Το θέμα εντοπίζεται στο γεγονός ότι η _onsubmit function που ορίζεται στο BaseScripts.js (και παρατίθεται παρακάτω) δεν καλείται παρά μόνο αν το PostBack γίνει μέσω ενός Button ή ImageButton.

    _onsubmit : function() {
       if (this._clientStateField) {
          this._clientStateField.value = this.saveClientState();
       }
       return true;
    }

     H _onsubmit όπως φαίνεται και από τον κώδικα αναλαμβάνει να σώσει το ClientState (μέσα στο οποίο θα πρέπει να καταγράψει το ActiveTabIndex).

    H _onsubmit ορίζεται ως delegate στον Constructor του AjaxControlToolkit.ControlBase και προστίθεται στον πίνακα με τους submit event handlers του Sys.WebForms.PageRequestManager κατά την εκτέλεση της ControlBase.initialize όπως φαίνεται παρακάτω:

    initialize : function() {
       AjaxControlToolkit.ControlBase.callBaseMethod(this, "initialize");
       // load the client state if possible
       if (this._clientStateField) {
          this.loadClientState(this._clientStateField.value);
       }

       // attach an event to save the client state before a postback or updatepanel partial postback
       if (typeof(Sys.WebForms)!=="undefined" && typeof(Sys.WebForms.PageRequestManager)!=="undefined") {
          Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatements, this._onsubmit$delegate);
       } else {
          $addHandler(document.forms[0], "submit", this._onsubmit$delegate);
       }
    }

    Άρα: Τι τρέχει; Γιατί εφόσον προστίθεται στον πίνακα _onSubmitStatements του PageRequestManager, τελικά ποτέ δεν εκτελείται όταν κληθεί η form.onsubmit();

    Για να ξεκαθαρίσω αν φταίει ο PageRequestManager πείραξα λίγο την initalize που φαίνεται παραπάνω ώστε να τρέξει το else κομμάτι και να βάλει τον _onsubmit$delegate στην στο submit event της document.form[0]. Τα ίδια! Δεν τρέχει η _onsubmit παρά μόνο ανα κάνεις post με ένα Button ή ImageButton.

    Παραμένω αβοήθητος και συνεχίζω την έρευνα...


    rousso
    Δημοσίευση στην κατηγορία: , , ,
Δείτε όλες τις δημοσιεύσεις της Θεματική Ενότητας
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems