
Αναρωτιέμαι αν αποθήκευση των δεδομένων στο viewstate είναι μια καλή ιδέα για αυτό το συγκεκριμένο πρόβλημα. Είναι ένα απλουστευμένο παράδειγμα του τι είμαι προσπαθούμε να επιτύχουμε, κατ 'αρχάς έχουμε τον έλεγχο Repeater:



```
<asp:Repeater id=Repeater1 runat=server>
<ItemTemplate>
<asp:TextBox id=Name runat=server />
<asp:TextBox id=Age runat=server />
</ItemTemplate>
</asp:Repeater>
<asp:TextBox id=NewPersonName runat=server />
<asp:TextBox id=NewPersonAge runat=server />
<asp:Buttin id=Button1 runat=server Text=Add OnClickButton1_Click/>

```

Για να κρατήσει τα πράγματα απλά θα παραιτηθεί τον κωδικό databinding, καθώς αυτό λειτουργεί φορτώνει στην τρέχουσα λίστα των ανθρώπων και των ηλικιών και δεσμεύει απόλυτα.


Το πρόβλημα είναι με τα κάτω 3 έλεγχοι, αυτό που θέλω είναι ο χρήστης να είναι σε θέση να πληκτρολογήσετε μια νέα καταχώρηση, κάντε κλικ στο κουμπί Προσθήκη και αυτό στη συνέχεια θα προστεθούν στον αναμεταδότη, αλλά δεν επέμεινε στη βάση δεδομένων.


Ο χρήστης θα πρέπει να είναι σε θέση να προσθέσετε πολλά ονόματα στη λίστα και στη συνέχεια κάντε κλικ στο κουμπί Αποθήκευση για να δεσμευτούν όλα τα νέα ονόματα με ένα κλικ αντί να διαπράττουν για κάθε είσοδο.

 
Αποθηκεύει μια σειρά από αντικείμενα σε ASP.NET viewstate η καλύτερη λύση για αυτό;
===================================================================================



Θα χειριστεί αυτό με δύο τρόπους. Η πρώτη θα είναι συστοιχίες JS και να κάνει clientside προσθήκη στο / προβολή μηχανισμό αναμεταδότη.


Η άλλη επιλογή θα ήταν να έχουμε ένα τραπέζι στο ΣΠ μου όπου αποθηκεύει αυτές έχουν αναληφθεί προσθήκες, και στη συνέχεια απλά να τους το ερώτημα πίσω.


και στην πραγματικότητα θα ήθελα ίσως κάνω ένα συνδυασμό των δύο. Χρησιμοποιήστε AJAX για την αποστολή των στοιχείων προς τα μη αναληφθέντα πίνακα λίστα ασύγχρονα, ενώ είμαι οικοδόμηση των νέων κόμβων για την οθόνη μου.


Από το κουμπί SAVE / commit, θα ήθελα να στείλετε την εντολή δεσμευτεί για το διακομιστή ασύγχρονα που μετακινεί τα στοιχεία του χρήστη από τα μη αναληφθέντα tableto το αφοσιωμένο πίνακα.

 

Θα χρησιμοποιήσετε javascript και φυλάξτε το σε συστοιχίες αντικείμενο. Στη συνέχεια, η πλευρά του client θα αναφορά τις συστοιχίες javascript για την κατασκευή του UI.


Μπορείτε να ρίξετε μια ματιά σε μερικά από τα javascript πλαισίων όπως το Yahoo YUI, script.aculo.us, jQuery, κ.λπ.

 

Θα χρησιμοποιήσετε ένα DataTable αντικείμενο και να το αποθηκεύσετε σε συνεδρία του χρήστη. Με αυτόν τον τρόπο έχετε ένα γρήγορο τρόπο για τα δεδομένα δέσμευσης σε κάθε έναν προσθέσετε / τροποποίηση / διαγραφή και μπορείτε απλά σαφές ότι από τη συνεδρίαση όταν η επεξεργασία γίνεται. Επιπλέον, θα μπορούσε εύκολα να αποκτήσετε πρόσβαση στη λίστα των χρηστών σε μια ξεχωριστή σελίδα, αν κρίθηκε απαραίτητο.


EDIT: Μια άλλη προειδοποίηση είναι ότι εάν είναι απαραίτητο, μπορείτε εύκολα να ρίξει μια DataView πάνω από αυτό είναι που χρειάζεται να κάνετε κάποια γρήγορη διαλογή / φιλτράρισμα της λίστας χρηστών.

 

Είσαι εμμονή ολόκληρη τη λίστα από τη βάση δεδομένων του viewstate ή απλά αδιάθετων προσθήκες;


Αν είναι μόνο οι προσθήκες, τότε αυτό είναι ένα καλό χρήση viewstate.


Εάν η λίστα από την DB δεν είναι πολύ μεγάλο ή πτητικών, τότε υποθέτω ότι θα είναι εντάξει, πάρα πολύ.

 