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

 

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

Απ: Υπολογισμός unbound columns ανά row σε databound datagridview (rowadded / cellformatting events)

  •  29-06-2007, 15:27

    Απ: Υπολογισμός unbound columns ανά row σε databound datagridview (rowadded / cellformatting events)

    Μετά από λίγη έρευνα, κοιτάξτε το κουλό που συμβαίνει στο RowsAdded Event:

    Σύμφωνα με το βιβλιαράκι "Databinding With Windows Forms 2.0" οπου βρήκα ένα απόσπασμα ισχύει το εξής: The RowsAdded event can be fired for one row at a time if you are programmatically adding rows in a loop, or it can be fired just once for a whole batch of rows being added, such as when you data bind or use the AddCopies method of the rows collection.

    Οκ, αρα λοιπόν βρήκαμε οτι όταν κάνουμε databinding το RowsAdded event έχει διαφορετική συμπεριφορά. @%@$%@#$. Για να δούμε όμως, ισχύει τελικά αυτό; Εβαλα το εξής στο RowsAdded Event για να δούμε τι θα γίνει:

    Private Sub DataGridView1_RowsAdded(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewRowsAddedEventArgs) Handles DataGridView1.RowsAdded

    MsgBox("rowindex:" + e.RowIndex.ToString + " rowcount:" + e.RowCount.ToString)

    Next
    End Sub

    Με την εκτέλεση φαίνεται ξεκάθαρα οτι το event τρέχει ΔΥΟ φορές και μόνο δυο. Τα αποτελέσματα είναι τα εξής (έχω 570 γραμμές που θα μπουν στο datagridview):

    rowindex:0 rowcount:1
    rowindex:1 rowcount:570

    ΕΛΕΟΣ κύριοι που σχεδιάσατε το datagridview! Διαφορετική συμπεριφορά στο programmatic binding, διαφορετική στο declarative, και τρέχει και ΔΥΟ φορές το event; Τελος πάντων, μπορώ τώρα να δέσω τα unbound columns μου στο event αυτό με ένα loop ως εξής:

    For Each r As DataGridViewRow In DataGridView1.Rows

    ' ...εδώ ο καλός ο κώδικας που δένει τα unbound

    Next

    Και βέβαια, FYI και FMI, μπορεί να χρησιμοποιηθεί και το CellFormatting Event, το οποίο όμως έχει την κακή διάθεση να τρέχει συνεχώς. Ακόμα και αν το περιορισουμε κοιτώντας το Index του column, και πάλι δεν μπορούμε να αποφύγουμε το οτι τρέχει οταν ο δρομέας μας περνάει απλώς πάνω από ένα κελί...

    Χαρακτηρίζω το θέμα ως επιλυθέν θεωρώντας οτι το αρχικό πρόβλημα λύθηκε. Παρ'όλα αυτά, θα ήθελα να ακούσω απόψεις για την περίεργη αυτή συμπεριφορά του RowsAdded event.

     

     


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
    Δημοσίευση στην κατηγορία: , , ,
Δείτε όλες τις δημοσιεύσεις της Θεματική Ενότητας
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems