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

 

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

Πρόβλημα με error provider σε databinded controls

Îåêßíçóå áðü ôï ìÝëïò M1ke. Τελευταία δημοσίευση από το μέλος Smert στις 24-03-2008, 08:53. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  25-01-2008, 13:24 39562

    Πρόβλημα με error provider σε databinded controls

    Καλησπέρα! Εχω δημιουργήσει μία φόρμα με databinded controls (drag'n'drop από datasource σε μορφή details). Θέλω να επισημαίνει ποιά πεδία δεν πρέπει να είναι null με τη χρήση ενός error provider. Καλώ τη συνάρτηση CheckNullValues στα events TextChanged και Focus.Leave.

    void CheckNullValues(object sender, EventArgs e)
    {
        DataRowView s;
        s = (System.Data.DatarowView) bindingsource1.Current;
        CheckRows((Dataset1.CustomerRow) s.Row);
    }

    με την CheckRows να ελέγχει αν τα controls έχουν null τιμες:

    για κάθε control

    if (customerRow.IsNull("Name") || customerRow.Name == "")
        errorprovider.seterror("Name", ...error...);
    else
        errorprovider.seterror("Name", "");

    Το πρόβλημα υπάρχει όταν πατάω για νέα εγγραφή από το bindingnavigator:
    ο error provider εμφανίζεται και μένει ενεργός αφού κάνω την αλλαγή (πχ το textbox ειναι κενό με το (!) διπλα του. Βάζω κάποια τιμή. Το (!) παραμένει... Εξαφανίζεται μόνο αν ξαναπάω στο control και ξαναφύγω (ναι, το έθεσα επιστημονικα)).

    Υπάρχει τρόπος να εξαφανίζεται το (!) όταν φεύγω από το textbox για πρώτη φορά?

    Ευχαριστώ!

    ΥΓ. όπου (!): Ο errorprovider
    ΥΓ2. Άτιμα κειμενοκούτια με δεδομενοδεσμό! (textbox με databinding vre!!)





    I think there's to much blood in my caffeine system..
  •  25-01-2008, 13:52 39563 σε απάντηση της 39562

    Απ: Πρόβλημα με error provider σε databinded controls

    Θα σου πρότεινα να αλλάξεις λίγο την λογική σου. Να κάνεις έλεγχο συνολικά όταν πρόκειται ο χρήστης να κάνει submit την εγγραφή ή να περάσει σε άλλη και να αφήσεις τον έλεγχο ανά πεδίο για τις περιπτώσεις που ένα πεδίο εξαρτάται από κάποιο άλλο. Όπως και να έχει, ίσως σε βοηθήσει το row status (να χειρίζεσαι διαφορετικά την περίπτωση που είναι new η εγγραφή)

     


    Vir prudens non contra ventum mingit
  •  25-01-2008, 14:06 39564 σε απάντηση της 39563

    Απ: Πρόβλημα με error provider σε databinded controls

    Θα ήθελα πολύ να αλλάξω τη λογική, απλά δεν ξέρω πως!! Οι παραπάνω συναρτήσεις εκτελούνται στην φόρμα.. (ξέρω, κακό). Είναι εύκολο να μεταφέρω τον έλεγχο στον κώδικα του dataset?
    Γενικά η εμπειρία μου με visual studio είναι μικρή, οπότε κάνω αρκετά λάθη σχεδιασμού..
    I think there's to much blood in my caffeine system..
  •  24-03-2008, 08:53 41093 σε απάντηση της 39564

    Απ: Πρόβλημα με error provider σε databinded controls

    Hello! καταρχήν κ εγώ αρχάριος είμαι αλλά θα σου πω τι ξέρω από ένα κεφαλαιάκι ενός book, το WinForms 2.0 Programming.

    Καταρχήν ναι τα events κατά τα οποία κάνεις validating είναι ""λάθος"". Το σωστό event είναι το validating, το οποίο έτσι κ αλλιώς θα βαρέσει όταν χάνει το focus, όποτε το focus.leave δε χρειάζεται να το πειράξεις. Με αυτό τον τρόπο δε σε αφήνει να χάσει focus το textbox μέχρι να πάρει ορθή τιμή, το οποίο δεν είναι και το πιο user-friendly, είναι ένα πρώτο στάδιο validation.Επίσης, ό,τι δεν πάρει ποτέ focus, δε θα validate κιόλας, όποτε περνάς σε validation όλης της φόρμας.

    Για να χάνουν focus και να μένει το (!), αλλάζεις απτα properties της φόρμας το AutoValidate -> EnableAllowFocusChange.

    Με κώσδικα: this.AutoValidate = AutoValidate.EnableAllowFocusChange;


    Επίσης, κάνεις validate κάθε control της φόρμας, που έχει "causesValidation" property, με τον handler του ok:

    void okButton_Click(object sender, EventArgs e) {
      if( !this.Validate() ) {
        this.DialogResult = DialogResult.None; //an einai dialog, gia na mi to kleinei.
      }
    }

    Αν έχεις controls μέσα σε groubboxes, θες !this.ValidateChildren() αντί Validate(). και τέλος έχει και validation constraints όπως selectable κλπ, δε ξέρω αν σε ενδιαφέρουν.

    Ελπίζω να βοήθησα, να ναι καλά η "βίβλος" μου. Happy Validating.

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