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

 

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

DataGridView calculations

Îåêßíçóå áðü ôï ìÝëïò Δημήτρης Μπούνδρης. Τελευταία δημοσίευση από το μέλος Δημήτρης Μπούνδρης στις 10-05-2007, 13:09. Υπάρχουν 7 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  10-05-2007, 09:42 31668

    DataGridView calculations

    Καλημέρα,

    Μήπως γνωρίζει κανείς πως μπορώ σε ένα DataGridView που αντιστοιχεί σε ένα DataTable να προσθέσω μία Bound Column η οποία να πραγματοποιεί υπολογισμούς πάνω σε άλλες στήλες του grid; Για παράδειγμα να προσθέτω  Integer τιμές από δύο Columns.

    Ευχαριστώ.


    Dimitris Boundris
    Software Engineer
  •  10-05-2007, 10:56 31674 σε απάντηση της 31668

    Απ: DataGridView calculations

    Καλημέρα Δημήτρη,

    Δεν σε βολέυει να το κάνεις στο T-SQL που εκτελείς?

    πχ SELECT MyInt1,MyInt2,MyInt1+MyInt2 AS MyIntSum FROM MyTable

    Μπορείς επίσης να φέρεις μία αδεια κολώνα απο το SQL και να την γεμίσεις μετά

    πχ, SELECT MyInt1,MyInt2,0 AS MyIntSum FROM MyTable

    Κάτι τέτοιο θα σου ελυνε το πρόβλημα?

    Αν ειμαι πολύ Off-Topic απο την ερωτηση σου, δώσε περισσότερες πληροφορίες για το τη θες ακριβός να κάνεις.

    Νάσος


    "Success is the ability to go from one failure to another with no loss of enthusiasm."
    Winston Churchill

    "Quality means doing it right when no one is looking."
    Henry Ford

  •  10-05-2007, 11:33 31678 σε απάντηση της 31674

    Απ: DataGridView calculations

    Υπάρχει αυτή η λύση που προτείνεις, αλλά θα με βόλευε επεξεργασία πάνω στο Grid.

    Ίσως ζητάω πολλά από τα απλά Controls τη Microsoft και ίσως πρέπει να αγοράσω proprietary controls πχ. Infragistics.

    Απλά δεν γνωρίζω αν γίνεται.

     


    Dimitris Boundris
    Software Engineer
  •  10-05-2007, 12:06 31680 σε απάντηση της 31678

    Απ: DataGridView calculations

    Δημήτρη,

    Ούτε η Infragistics θα σε σώσει, νομιζω, και αν κανω λαθος καποιος ας με διορθώσει,οτι δεν μπορεις να κάνεις Add Unbound column σε Bound DataSet, εκεί είναι το πρόβλημα και όχι στο όποιο Control.

    Αν θες να κανεις το υπολογισμό στο Grid χρησιμοποίησε το δευτερο παράδειγμα, να φέρεις 'Αδεια' κολώνα(Bound), και να κάνεις τον Υπολογισμό στο Grid για κάθε γραμμή.

    Νασος


    "Success is the ability to go from one failure to another with no loss of enthusiasm."
    Winston Churchill

    "Quality means doing it right when no one is looking."
    Henry Ford

  •  10-05-2007, 12:20 31681 σε απάντηση της 31668

    Απ: DataGridView calculations

    Μάλλον εννοείς ότι θες να προσθέσεις unbound column, όχι bound.

    Μπορείς να πας στο DataGridView Tasks και να επιλέξεις Edit Columns. Προσθέτεις το column που θέλεις και είσαι έτοιμος. Το θέμα τώρα πώς θα δείξεις το περιεχόμενο που θες μέσα στο κάθε κελί.

    Μία τεχνική είναι να χρησιμοποιήσεις το CellFormating event, όπως περίπου παρακάτω:

        Private Sub ProductsDataGridView_CellFormatting(ByVal sender As System.Object, _

             ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) _

             Handles ProductsDataGridView.CellFormatting

            Dim intQty As Integer = _

                CType(ProductsDataGridView.Rows(e.RowIndex).Cells("Quantity").Value, Integer)

            Dim intPrice As Double = _

                CType(ProductsDataGridView.Rows(e.RowIndex).Cells("Price").Value, Double)

           

            e.Value = intQty * intPrice

            e.FormattingApplied = True

        End Sub

     

    Από εκεί και πέρα, εξαρτάται τι ακριβώς θες να κάνεις. Για παράδειγμα, η παραπάνω τεχνική ενημερώνει τα κελιά όταν φτιάχνονται. Άν όμως αλλάξουμε σε μία εγγραφή την ποσότητα ή την τιμή, δεν θα δούμε να ενημερώνεται το computed column. Θα πρέπει να χρησιμοποιήσεις και τα υπόλοιπα events σχετικά με τα κελιά του grid για να τσακώνεις την αλλαγή και να ενεργείς ανάλογα.

    Εναλλακτικά, σκέψου να χρησιμοποιήσεις ένα computed column πάνω στο DataTable για να έχεις αυτόματο data binding.


    Vir prudens non contra ventum mingit
  •  10-05-2007, 12:34 31682 σε απάντηση της 31668

    Απ: DataGridView calculations

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

    Έχεισ το datatable. Προσθέτεις εκεί ένα ακόμα field. Στο expression property του field γράφεις τα ονόματα των fields που θέλεις να προσθέσεις. Π.χ Field1+field2.

    Κάνεις bound το field στο Grid και αυτόματα έχεις το άθροισμα που θέλεις. Τα sql statements που έχεις γράψει για να γεμίσεις, να κάνεις μεταβολές ή και ακόμα να διαγράψεις εγγραφές από το datatble δεν τα αλλάζεις καθόλου. Είναι ο πιο απλός τρόπος πιστεύω χωρίς sql statements κτλ.

  •  10-05-2007, 12:50 31684 σε απάντηση της 31682

    Απ: DataGridView calculations

    Λες αυτό που είπα για το computed column στο DataTable Smile 
    Vir prudens non contra ventum mingit
  •  10-05-2007, 13:09 31686 σε απάντηση της 31684

    Απ: DataGridView calculations

    Ευχαριστώ πολύ,

    Πιστεύω ότι αρκούν οι δύο αυτές λύσεις.


    Dimitris Boundris
    Software Engineer
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems