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

 

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

Load Dynamic WebUserControls και PostBack πρόβλημα

Îåêßíçóå áðü ôï ìÝëïò plavidas. Τελευταία δημοσίευση από το μέλος anjelinio στις 11-10-2005, 10:33. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  06-10-2005, 01:18 5921

    Load Dynamic WebUserControls και PostBack πρόβλημα

    Λοιπόν φίλοι μου, έχω ένα πρόβλημα και βασίζομαι στις γνώσεις σας πάνω στο αντικείμενο…

     

    Το όλο concept της εφαρμογής είναι να κάνω μία σελίδα σε στυλ Wizard.

    Δηλαδή να φορτώνω ένα WebUserControl και με το πάτημα του κουμπιού από το control να φορτώνεται το επόμενο WebUserControl με την προϋπόθεση ότι το control που έγινε το κλικ να μετατρέπετε σε Enabled=False.

    *Να σημειώσω ότι είναι απαίτηση να υπάρχουν τα δεδομένα στην ίδια σελίδα και να μην προ υπάρχουν τα επόμενα πρίν από το κλικ του κάθε WebUserControl.

     

    για παράδειγμα φορτώνω δυναμικά το webuserControl1:

     

    If Not Page.IsPostBack Then

                Dim MyControl As New Control

                MyControl = Page.LoadControl("./WebUserControl1.ascx")

                Page.FindControl("Form1").Controls.Add(MyControl)

    End If

     

    Στο Control αυτό έχω ένα κουμπί που θα μου φορτώνει το επόμενο WebUserControl με τον ίδιο τρόπο:

    If Not Page.IsPostBack Then

                Dim MyControl As New Control

                MyControl = Page.LoadControl("./WebUserControl2.ascx")

                Page.FindControl("Form1").Controls.Add(MyControl)

               

                'Function για την ενεργοποίηση απενεργοποίηση

    'των αντικειμένων που είναι πάνω στο WebUserControl

    EnableDisableControlsFromWebControl(MyControl, True)

    End If

     

      

    Το πρόβλημά μου είναι ότι όταν κάνω κλίκ στο κουμπί από το webUserControl1 τότε εξαφανίζετε από τη σελίδα!

     

    Idea [I]Υπάρχει κάποια λύση για αυτό το πρόβλημα που έχω να αντιμετωπίσω?

     


    Παναγιώτης Λαβίδας
    Software Developer
  •  11-10-2005, 00:50 6085 σε απάντηση της 5921

    Απ: Load Dynamic WebUserControls και PostBack πρόβλημα

    Τελικά ίσως να μην είναι η καλύτερη λύση αλλά με αυτό δούλεψε κανονικά...

     

    If Not Page.IsPostBack Then

                Dim MyControl As New Control

                MyControl = Page.LoadControl("./WebUserControl1.ascx")

                Page.FindControl("Form1").Controls.Add(MyControl)

                Session.Add("WebUserConbtrol1", MyControl)

          Else

                If Not Session.Item("WebUserConbtrol1") is nothing then

                      Page.FindControl("Form1").Controls.Add(CType(Session.Item("WebUserConbtrol1"), WebControl))

                End If

    End If

     

    Με τον παραπάνω τρόπο φορτώνετε το Control μόνο την πρώτη φορά, ενω την δεύτερη εμφανίζεται πάλι χωρίς να έχει χάσει τις τιμές ,του απο μία session Variable. Smile [:)]

     


    Παναγιώτης Λαβίδας
    Software Developer
  •  11-10-2005, 08:48 6087 σε απάντηση της 6085

    Απ: Load Dynamic WebUserControls και PostBack πρόβλημα

    Έχω την αίσθηση ενός deja vu (δεν έχω γαλλικά στο πληκτρολογιό μου αλλά κατάλαβες τις θέλω να πω...)

    Νομίζω ότι μόλις πριν μερικές μέρες απάντησα στο ίδιο θέμα και δεν το βρίσκω πουθενά!

    Anyway!

    Φυσικά υπάρχει καλύτερος τρόπος από το να βάζεις το control σε session variable... Είναι όμως περισσότερο θέμα αρχιτεκρονικής και προσέγγισης της λύσης παρά θέμα επιμέρους αλογορίθμων.

    Όπως (νομίζω ότι) έχω ξαναπεί ο wizard πρέπει να είναι ένας ξεχωριστός controller (άλλη class) η οποία θα ξέρει πότε και τι πρέπει να φορτωθεί... Τα navigation buttons που θα φορτώνουν το επόμενο και το προηγούμενο user control σου δεν πρέπει (επι της αρχής) να βρίσκονται μέσα στα steps του wizard αλλά στον ίδιο τον wizard. Ο Wizard θα χρησιμοποιεί το ViewState για να μην χάνει το state του. Σε γενικές γραμμές κάθε step θα πρέπει να φορτώνεται σε δύο κύκυλους της σελίδας. Μια φορά στον κύκλο που πρέπει για να το δει ο χρήστης και άλλη μια στον αμέσως επόμενο ώστε να χειρίζεται τα post-back events του.

    Σε κάποια φάση που θα έχω χρόνο θα σας κάνω ένα εκτενές article επί του θέματος μια κι έχω φτιάξει ένα σετ από classes για αυτή τη δουλειά το οποίο όμως είναι ιδιαίτερα εκτενές και "πλήρες" και δεν έχει νόημα να το κάνω απλά post γιατί δεν θα βγάλετε άκρη χωρίς να σας εξηγήσω το πως και το γιατί...

    Ελπίζω να σου έδωσα μια κεντρική ιδέα,

    Φιλικά
    rousso
    rousso
  •  11-10-2005, 10:33 6092 σε απάντηση της 6087

    Απ: Load Dynamic WebUserControls και PostBack πρόβλημα

    Χιχιχι !!! Στο δικό μου post ήταν η απάντηση σου φίλε rousso, όταν τα Web User Controls μου έχαναν το viewstate τους πρόσθεταν δυναμικά controls στη σελίδα μετά το LoadViewState τους :)

    Αλλά ναι, δεν είναι καλή ιδέα να σώζεις controls στο session μ'αυτό τον τρόπο, εκτός απ'ότι βαραίνει το server, μπορεί κάλλιστα να τύχεις στην περίπτωση του new window, όπου ο χρήστης (ή 2 χρήστες) τρέχουν τον ίδιο wizard και accidentally μοιράζονται το ίδιο instance του control σου .. με τραγικά αποτελέσματα :(
    Angel
    O:]
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems