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

 

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

custom validator

Îåêßíçóå áðü ôï ìÝëïò dimkasta. Τελευταία δημοσίευση από το μέλος anjelinio στις 19-10-2007, 20:41. Υπάρχουν 7 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  14-12-2005, 23:35 7968

    Idea [I] custom validator

    Έχω ένα textBox σε asp.net 2.0, όπου ο χρήστης εισάγει κείμενο με max 100 χαρακτήρες.

    Καθώς δεν ξέρω πώς να ρυθμίσω έναν custom validator, το έβαλα με ένα απλό event.

    Μέσα στο on-click event του button, έβαλα ένα

    if - else block.

    Άν το κείμενο είναι >0 και <101, τότε το αποθηκεύει στη βάση. Άν όχι, δίνει ένα μήνυμα λάθους σε ένα Label.

    το κακό είναι ότι αφού εμφανιστεί το μήνυμα λάθους, άν βάλω σωστό κείμενο στο textBox και πατήσω submit, δεν παίρνει αμέσως την τιμή, αλλά πρέπει να το πατήσω και μια 2η φορά...

    Μπορεί κάποιος να μου εξηγήσει γιατί συμβαίνει αυτό και πώς μπορώ να το ξεπεράσω?

    Από κει και πέρα μπορεί να μου πεί κάποιος πως μπορώ να συνδέσω έναν custom validator και  να αποτρέπω την εκτέλεση του event αν δεν είναι valid το περιεχόμενο του textBox?

    T.I.A.

    Δημήτρης


    Simple Photography
  •  15-12-2005, 01:26 7974 σε απάντηση της 7968

    Time [O] Απ: custom validator

    Φίλε Δημήτρη καλωσήλθες στην παρέα μας...

    και μπαίνω κατευθείαν στο θέμα μας!!!

         Γιατι να κάνεις συνέχεια post back αφου μπορείς με πολύ απλό τρόπο να τοποθετήσεις στη φόρμα σου ενα RegularExpressionValidator Μόλις βάλεις το control στη φόρμα σου συνέδεσέ το με το control που επιθυμείς. (ControlToValidate --> TextBox) Στο property ValidationExpression του RegularExpressionValidator του βάζεις την τιμή: \w{1}[a-zA-Z0-9_ ]{0,99}

    <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="Επιτρέπονται μέχρι 100 χαρακτήρες..." ValidationExpression="\w{1}[a-zA-Z0-9_ ]{0,99}"></asp:RegularExpressionValidator>

    στο παραπάνω παράδειγμα o validator δέχετε μέχρι και 100 χαρακτήρες και κάνει validation στο TextBox1... Ελπίζω να σε βοήθησα στο πρόβλημα που αντιμετωπίζεις Big Smile [:D]


    Παναγιώτης Λαβίδας
    Software Developer
  •  15-12-2005, 01:40 7975 σε απάντηση της 7974

    Απ: custom validator

    Ωραίος. Το δοκιμάζω αμέσως.
    Ένα άλλο πρόβλημα που είχα με το custom, ήταν ότι αν και ο validator επέστρεφε μήνυμα λάθους, το event του button ξεκινούσε και γραφότανε στη βάση το μεγαλύτερο κείμενο (ή προσπαθούσε τελος πάντων...)

    Simple Photography
  •  15-12-2005, 02:01 7976 σε απάντηση της 7975

    Απ: custom validator

    Δούλεψε πολύ όμορφα
    Ευχαριστώ πολύ

    Μήπως ξέρει κανείς πώς μπορώ να συγκρίνω και 2 ώρες σε textbox?
    Η τιμή έρχεται από
    DateTime.Parse("...").ToShortTime
    Μπορώ να τις συγκρίνω κατευθείαν?
    Simple Photography
  •  15-12-2005, 09:33 7977 σε απάντηση της 7976

    Απ: custom validator

    Αν οι τιμές σου προέρχονται από TextBox τότε μπορείς να κάνεις τη σύγκριση με έναν CompareValidator, π.χ.

    <asp:CompareValidator runat="server" ErrorMessage="Απαιτείται οι τιμές να είναι ίδιες" ControlToCompare="txt2" ControlToValidate="txt1"/>

    Αλλά μιας και το post αναφέρεται σε Custom Validators, να πω στα γρήγορα ότι οι Custom Validators δουλεύουν ως εξής. Ορίζεις έναν Custom Validator στο aspx, π.χ.

    <asp:CustomValidator runat="server" ID="cvMyValidator" ErrorMessage="Διορθώστε το σφάλμα" ControlToValidate="txt1"/>

    Κατόπιν στον κώδικα ορίζεις τον κώδικα για το event ServerValidate για να κάνει το τελικό validation, π.χ.

    private void cvMyValidator_ServerValidate(object source, ServerValidateEventArgs args) {
        //Το args.Value περιέχει την τιμή του txt1. Προσοχή, ότι το event καλείται μόνο αν ισχύει args.Value != String.Empty
        args.IsValid = args.Value.Length > 23;
    }


    Θυμήσου ότι σε όλα τα events τα οποία καλούν τον κώδικα που εκτελεί ενέργειες (π.χ. σε click events για τα button, κτλ) καλό είναι πριν κάνεις οτιδήποτε να ελέγχεις ότι η σελίδα είναι Valid, π.χ.

    private void btnSubmit_Click(object sender, EventArgs e) {
        if (Page.IsValid) {
            //Do the work here
        }
    }


    Αυτά τα ολίγα, ελπίζω να σε κάλυψα. Α, να μην ξεχάσω, όλα αυτά τα γράφω από εμπειρία στο ASP 1.1, αν κάτι έχει αλλάξει παρακαλώ διορθώστε με.

    Στερνή μου γνώση να σε είχα πρώτα...
  •  15-12-2005, 10:38 7981 σε απάντηση της 7977

    Απ: custom validator

    OK μάλλον είναι καλύτερα με compare validator. Άυτό που μού δωσες είναι καλό αν θέλω να είναι ίδιο text στα 2 textBox.

    Αυτό που θέλω είναι όταν δίνει ο χρήστης χρόνο έναρξης και λήξης, να ελέγχω ότι η λήξη είναι μετά την έναρξη.

    Μπορεί ο compare validator να συγκρίνει μόνο χρόνους από DateTime? O τιμές στα textbox έρχονται από

    DateTime.parse("...").GetShortTime()

    Αυτό που είπες για τη σελίδα ότι είναι valid?

    Μπορείς να δώσεις μερικές πληροφορίες ακόμη? Σε τι χρησιμεύει αυτός ο έλεγχος?


    Simple Photography
  •  19-10-2007, 16:49 36387 σε απάντηση της 7981

    Απ: custom validator

    Παραεμφερές με το θέμα του τίτλου :

    Ρε παιδιά δώστε μια εξήγηση,
    γιατί δεν παίζει το παρακάτω γιατί έχω παρανοήσει ....
    Dynamic addition : Τρία Cells (Περιγραφή, Ένα combo, και Ένας CompareValidator)

    Χωρίς τον validator όλα παίζουν μια χαρά ... Αν κάνω add ένα οποιοδήποτε άλλο control δεν
    έχω κανένα θέμα ... Όποιον validator δοκίμασα μου δημιούργησε πρόβλημα ...

    Με validator .. Δεν μου γίνεται add παρά το πρώτο row (σίγουρα έχω παραπάνω δεν είναι data related το θέμα)

    Υ.Σ.
    VS 2003 + framework 1.1 (από ανάγκη)

    Protected Function BuildRowFor(ByVal smeCasesLookupRow As DataRow) As HtmlTableRow

    '/ ok, ftiaxnw to row ...
    Dim trSMECase As New HtmlTableRow
    '/ kai twra thelw 2 cells, ena me to bitCombo, ki ena me thn perigrafh
    '/ ok, twra to description ...

    Dim descrCell As New HtmlTableCell
    descrCell.Attributes("class") = "formLabelStyle"
    descrCell.InnerHtml = smeCasesLookupRow("SSE_Description")

    '/ add sto row
    trSMECase.Cells.Add(descrCell)

    '/ Me ligh tyxh, thelw ki ena validator gia to combo ...
    Dim bitComboCell As New HtmlTableCell

    Dim btCombo As BitCombo = CType(Me.Page.LoadControl(Request.ApplicationPath & "/BitCombo.ascx"), BitCombo)

    With btCombo
       .ID = "cmb" & smeCasesLookupRow("SSEID")
       .ValidatorEnabled =
    False '/Me.IsRequired
       
    .ValidatorVisible = False '/Me.IsRequired
       
    .BitComboErrorMessage = ""
    End With

    bitComboCell.Controls.Add(btCombo)
    trSMECase.Cells.Add(bitComboCell)

    Dim reqFieldCell As New HtmlTableCell
    Dim reqFieldVal As CompareValidator = New CompareValidator

    With reqFieldVal
       .ID = "cpv" & smeCasesLookupRow("SSEID")
       .ControlToValidate = "cmb" & smeCasesLookupRow("SSEID")
       .Type = ValidationDataType.Integer
       .ValueToCompare = 0
       .Operator = ValidationCompareOperator.GreaterThan
       .Display = ValidatorDisplay.Dynamic
       .ErrorMessage = "ΓΑΜΩ ΤΗΝ ΑΤΥΧΙΑ ΜΟΥ"
       .EnableClientScript =
    True
       
    .EnableViewState = True
       
    .Enabled = True
       
    .Visible = True
    End With

    reqFieldCell.Controls.Add(reqFieldVal)
    trSMECase.Cells.Add(reqFieldCell)

    Return trSMECase

    End Function


    Πάνος Αβραμίδης
  •  19-10-2007, 20:41 36397 σε απάντηση της 36387

    Απ: custom validator

    Πιθανώς ο validator κάνει emmit καποιο HTML/Javascript block το οποίο "χαλάει" το html source και τα "παίζει" ο browser. Ένα view source ίσως να απαντήσει στις απορίες σου.

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