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

 

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

(UserControl Data binding & BindingSource.EndEdit() Effect)

Îåêßíçóå áðü ôï ìÝëïò γιωργος μπακογιαννης. Τελευταία δημοσίευση από το μέλος infoCENTER στις 13-09-2006, 22:47. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  12-09-2006, 08:43 16587

    Hmm [^o)] (UserControl Data binding & BindingSource.EndEdit() Effect)

    Συνημμένα: WindowsApplication25.zip

    Πρόσφατα ασχολήθηκα με ένα πρόβλημα(;) που είχα εδώ και καιρό.

     

    Άλλα δεν είχα προσπαθήσει να το λύσω διότι δεν ήταν τόσο κρίσιμο.

     

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

     

    Το βρήκα και στο MSDN forum:

    UserControl Data binding & BindingSource.EndEdit() Effect

    Υπογράφω εκεί σαν GeoB

     

     

    Τελικά υπάρχει κάτι πέρα από το «loops through all datatables and rows and compares original version value with current version value»;

     

    Παραθέτω και ένα απλό project που εμφανίζεται το πρόβλημα!

     

     

    Φιλικά,

     


    while (!dead) learn();
  •  13-09-2006, 16:29 16700 σε απάντηση της 16587

    Απ: (UserControl Data binding & BindingSource.EndEdit() Effect)

    Επανέρχομαι αλλά αυτή η λύση που έφτιαξα δεν μου αρέσει Sad

     

    /// <summary>
            /// Gets a value indicating whether the DataSet has changes, including new, deleted, or modified rows.
            /// </summary>
            /// <param name="dataSet"></param>
            /// <returns>true if the DataSet has changes; otherwise false.</returns>
            public static bool HasChanges(DataSet dataSet) {
                if (dataSet==null) return false;
                for (int table = 0; table < dataSet.Tables.Count; table++) {
                    for (int row = 0; row < dataSet.Tables[table].Rows.Count; row++) {
                        for (int col = 0; col < dataSet.Tables[table].Columns.Count; col++) {
                            if (dataSet.Tables[table].Rows[row].RowState == DataRowState.Added) return true;
                            if (!dataSet.Tables[table].Rows[row][col, DataRowVersion.Original].Equals(dataSet.Tables[table].Rows[row][col, DataRowVersion.Current])) return true;
                        }
                    }
                }
                return false;
            }


    while (!dead) learn();
  •  13-09-2006, 22:47 16713 σε απάντηση της 16700

    Απ: (UserControl Data binding & BindingSource.EndEdit() Effect)

    Είχα και εγώ πριν από καιρό ένα τέτοιο περίεργο πρόβλημα με το Binding. Δεν γνωρίζω αν αυτό που αντιμετώπισα εγώ έχει κάποια σχέση με το συγκεκριμένο που αναφέρεις αλλά πιστεύω πως σίγουρα θα ήταν κάποιο side effect τις EndEdit.

    Συγκεκριμένα υπήρχε ένα DataGridView όπου εκεί ο χρήστης έβλεπε τις εγγραφές που ήταν καταχωρημένες και στην συνέχεια μπορούσε να ανοίξει μία νέα φόρμα και να αρχίζει να καταχωρεί νέες. Αυτό που παρατήρησα ήταν ότι όσο περισσότερες εγγραφές περνούσε τόσο περισσότερο αργούσε το Binding να τελειώσει και να επιστρέψει τον έλεγχο στην εφαρμογή. Μου φάνηκε περίεργο οπότε άχισα να το ψάχνω. Και ανακάλυψα ότι έβαζε σε όλες τις εγγραφές RowState Modified και την τελευταία που περνούσα Added. Περίεργο ε;

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