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

 

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

Επεξεργασία dataset record σε δεύτερη φόρμα

Îåêßíçóå áðü ôï ìÝëïò dseferlis. Τελευταία δημοσίευση από το μέλος infoCENTER στις 08-11-2008, 17:43. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  07-11-2008, 19:16 46099

    Επεξεργασία dataset record σε δεύτερη φόρμα

    Καλησπέρα σε όλους.
    Χαίρομαι που έγινα μέλος και συγχαίρω όλους για την πολύ καλή δουλειά που κάνουν εδώ.
    Είμαι νέος στο dotnetzone όπως και στην C# με την οποία ασχολούμε 2 μήνες περίπου μετά από αρκετό χρόνο στη Delphi.

    Το πρόβλημά μου είναι το εξής:
    Έχω σε μια φόρμα ένα dataset (untyped) με το οποίο κάνω ReadXml ένα αρχείο xml και εμφανίζω τα δεδομένα σε ένα datagridview. Θέλω στο CellDoubleClick να εμφανήσω μια φόρμα με τα δεδομένα της γραμμής να τα επεξεργαστώ και να τα επιστρέψω στο dataset.

    Ευχαριστώ για τη βοήθειά σας.

  •  07-11-2008, 20:29 46104 σε απάντηση της 46099

    Απ: Επεξεργασία dataset record σε δεύτερη φόρμα

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

    Γενικά αποφεύγω ο κώδικάς μου να συνδέεται με controls. Δηλαδή στην συγκεκριμένη περίπτωση στο CellDoubleClick του συγκεκριμένου Grid control να τρέξεις μία ρουτίνα που να σου πειστρέφει το συγκεκριμένο Row και να το περάσεις στην δεύτερη φόρμα. Αν αλλάξεις το Grid με κάποιο Third Party control όπως καταλαβαίνει αυτός ο κώδικάς θα πρέπει να αλλάξει.

    Για το λόγο αυτό σχεδόν πάντα χρησιμοποιώ Data Binding που μου δίνει εκείνο το encapsulation που χρειάζομαι έτσι ώστε να μην χρειάζεται να γνωρίζω τι controls έχει η φόρμα μου και σε ποιον κατασκευαστή αυτά ανήκουν. Στην περίπτωση που αναφέρεις θα μπορούσες να εισάγεις ένα dataset στο project σου και να δημιουργήσεις σε αυτό τις στήλες που χρειάζεσαι.

    Στην φόρμα που έχεις το Grid να προσθέσεις ένα BindingSource στο οποίο η τιμή του Property DataSource να είναι του τύπου dataset που έχεις δημιουργήσει.

    Το αντίστοιχο property DataSource του Grid να δείχνει πάνω στο BindingSource.

    Το BindingSource έχει ένα property που λέγεται Current και στην περίπτωση μας σου επιστρέφει την τρέχουσα εγγραφή του dataset την οποία εσύ έχεις επιλέξει στο grid.

    Οπότε κάνοντας subscribe στο doublecellclick θα μπορούσες πολύ απλά να πάρεις την τρέχουσα εγγραφή γράφοντας BindingSource.Curreent.

    Με τον παραπάνω κώδικα όπως καταλαβαίνεις, ανεξάρτητα τι control θα έχεις (grid, listbox και ότι βγει από κάποιο κατασκευαστή) ο συγκεκριμένος κώδικας πάντα θα παίζει.

  •  08-11-2008, 09:49 46116 σε απάντηση της 46104

    Απ: Επεξεργασία dataset record σε δεύτερη φόρμα

    Ευχαριστώ για τη βοήθεια.
    Χρησιμοποίησα bindingsource και έκανα public τα controls της 2ης φόρμας οπότε πριν την κάνω show πρόσθεσα databindings στα controls. Φαίνεται ότι δουλεύει σωστά μέχρι στιγμής.
    Είναι ο τρόπος αυτός ορθός;
    Ευχαριστώ και πάλι.
  •  08-11-2008, 17:43 46117 σε απάντηση της 46116

    Απ: Επεξεργασία dataset record σε δεύτερη φόρμα

    Το να κάνεις Public τα controls όχι δεν θα έλεγα ότι είναι ο σωστός τρόπος με βάση την λογική που ανέφερα, πιο σωστό θα ήταν στον constructor τις δεύτερης φόρμας να περνούσες σαν παράμετρο το Row ή και ακόμα το BindingSource, αν ήθελες να δώσεις στην δεύτερη φόρμα την δυνατότητα να κάνει navigation στα records. (Προηγούμενη, επόμενη εγγραφή κτλ.) Ή ακόμα θα μπορούσες να φτιάξεις μία public ρουτίνα που θα καλούσες και θα τις περνούσες την κατάλληλη παράμετρο. Αλλά να κάνεις public τα controls δεν το βρίσκω καλή ιδέα.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems