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

 

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

πρόβλημα με edit σε DataGridView & LINQ

Îåêßíçóå áðü ôï ìÝëïò nmichalo. Τελευταία δημοσίευση από το μέλος Markos στις 27-03-2010, 23:30. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  27-03-2010, 18:48 57878

    πρόβλημα με edit σε DataGridView & LINQ

    Έχω το εξής πρόβλημα και θα ήθελα τη γνώμη σας για το εξής:

    Έχω ένα LINQ query το οποίο έχει μερικά joins και projection, πρέπει αναγκαστικά να χρησιμοποιήσω projection μιας και τραβάω διάφορες στήλες από τους πίνακες των join και επίσης υπολογίζω 2-3 μερικά και ολικά αθροίσματα. Επειδή έχω projection χρησιμοποιώ anonymous type (δηλαδή το γνωστό var) για τα αποτελέσματα του query. Τα αποτελέσματα τα διαμορφώνω μια χαρά σε ένα DataGridView και όλα φαίνονται ρολόι, προγραμματιστικά βάζω το DataGridView.DataSource = το query μου. Μου ζητήθηκε όμως να υπάρχει η δυνατότητα να γίνεται edit σε μία στήλη και εκεί εστιάζεται το πρόβλημα. Από ότι είδα δεν μπορώ να κάνω ReadOnly = false  την στήλη μου διότι το DataGridView θα είναι σε ReadOnly mode εάν χρησιμοποιώ anonymous type!

    Έχει κανείς αντιμετωπίσει κάτι παρόμοιο;

     

  •  27-03-2010, 20:16 57879 σε απάντηση της 57878

    Απ: πρόβλημα με edit σε DataGridView & LINQ

    Μπορείς να μας δείξεις το query? Χρησιμοποιείς Anonymous Class στην Select σου?


  •  27-03-2010, 20:58 57880 σε απάντηση της 57879

    Απ: πρόβλημα με edit σε DataGridView & LINQ

    Ένα από τα linq query μου είναι το εξής:

    var returnDetails = from dd in myDataContext.ReturnDetails
                                 where dd.ReturnId == Convert.ToInt32(this.editReturnIdTextBox.Text)
                                 join p in myDataContext.pastItems on dd.PublicationId equals p.PublicationId
                                 select new { ID = dd.PublicationId, NAME = p.PublicationName, ISSUE = dd.PublicationIssue, PRICE = dd.PublicationPrice, DELIVERED = dd.QuantityDelivered, RETURNED = dd.QuantityReturned};

    Το πρόβλημά μου είναι σχετικά με το πως θα μπορούσα να το χρησιμοποιήσω με τέτοιο τρόπο ώστε το DataGridView να δέχεται να μπει σε μη readonly mode. Γενικά από ότι έχω δει στο δίκτυο το πρόβλημα είναι επειδή projection & var. Έαν απλά έχω έναν πίνακα και επιλέγω όλα τα πεδία γίνεται από ότι είδα σε κάποια forum.

  •  27-03-2010, 22:06 57882 σε απάντηση της 57880

    Απ: πρόβλημα με edit σε DataGridView & LINQ

    Και να μπορούσες να κάνεις editing, ποιο το όφελος; Έτσι κι αλλιώς στα projections δεν έχεις change tracking.


    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
  •  27-03-2010, 22:49 57883 σε απάντηση της 57882

    Απ: πρόβλημα με edit σε DataGridView & LINQ

    το πρόβλημάμου είναι να κάνω edit στο datagrid, όχι να αποθηκευσω τα δεδομένα μετά (δεν μου χρειάζεται νομίζω κιόλας σε αυτό που κάνω)

  •  27-03-2010, 23:30 57884 σε απάντηση της 57883

    Απ: πρόβλημα με edit σε DataGridView & LINQ

    nmichalo:

    το πρόβλημάμου είναι να κάνω edit στο datagrid, όχι να αποθηκευσω τα δεδομένα μετά (δεν μου χρειάζεται νομίζω κιόλας σε αυτό που κάνω)

    Αν το datagridview αρνείται να "συνεργαστεί" με οποιονδήποτε τρόπο, οι "λύσεις" είναι πολλές, αλλά με διαφορετικές παρενέργειες η κάθε μία. Για παράδειγμα, θα μπορούσες να ορίσεις μια unbounded στήλη για κάθε ένα property που θες να κάνεις editing και να παρουσιάζεις αυτήν στο χρήστη αντί της bounded column. Σ' αυτή την περίπτωση όλα γίνονται στο grid (πολύ κακό). Μια πιο ορθόδοξη λύση θα ήταν να φτιάξεις dataset με datatables που θα τα γεμίζεις με τα δεδομένα που σου επιστρέφουν τα linq queries και να κάνεις binding σ' αυτά. Τέλος, ίσως το πιο κατάλληλο είναι να φτιάξεις custom objects με τα properties που σου επιστρέφουν τα anonymous types, συν τα IDs, μήπως στο μέλλον χρειαστεί να αποθηκεύσεις τις αλλαγές.

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


    Ακόμα κι ένας άνθρωπος μπορεί ν' αλλάξει τον κόσμο. Μη θέλεις να κυβερνήσεις. Απλά δείξε το μονοπάτι κι ο κόσμος θ' ακολουθήσει!!
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems