Announcement

Collapse
No announcement yet.

Bei Fehler Textboxfarbe ändern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bei Fehler Textboxfarbe ändern

    Hallo alle zusammen,

    Mich plagt erneut ein Problemchen.

    Ich die Textboxen, die mit
    - RequiredFieldValidator
    und
    - RegularExpressionValidator
    überprüft werden, bei einem Fehler in eine andere Farbe tauchen.

    leider habe ich nicht den geringsten schimmer, wie ich das machen soll, da
    mein erster Versuch schonmal gründlich in die Hose gegangen ist.

    Code:
    <asp:TextBox ID="tbxAddresse" TextMode="SingleLine" MaxLength="10"
     OnTextChanged="onChangeValid" runat="server" style="height: 20px" />
    
    <asp:RequiredFieldValidator ID="rfvTbxAddresse"
     ControlToValidate="tbxAddresse" ErrorMessage="Bitte geben sie ein Datum ein!" 
    Display="None" runat="server"/>
    
    <asp:RegularExpressionValidator ID="revTbxAddresse"
     ControlToValidate="tbxAddresse" ErrorMessage="Bitte geben Sie ein gültiges Datum ein! 
    (TT.MM.JJJJ)" Display="None" 
    ValidationExpression="^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$" 
    runat="server" />
    
    
    // *** Diese Methode rufe ich beim Page_Load auf. ***
    public void CheckValid()
            {
                if (this.rfvTbxAddresse.IsValid)
                {
                    this.tbxAddresse.BackColor = System.Drawing.Color.White;
                }
                if (this.revTbxAddresse.IsValid)
                {
                    this.tbxAddresse.BackColor = System.Drawing.Color.White;
                }
                else
                {
                    this.tbxAddresse.BackColor = System.Drawing.Color.Red;
                }
    
            }
    Ich ahne schon das der Code nicht sehr gelungen ist, aber sonst würde er ja auch funktionieren

    Ich hoffe einfach jemand von euch kann mir helfen.

    Danke im Voraus und Gruß

    F60.2

    +++
    Visual Studio 2008
    ASP.Net / C#

    Bei fragen, fragen ^^

  • #2
    Hab das Problem schon selber bezwungen ^^

    Code:
            public void CheckValid()
            {
                Page.Validate();
                this.tbxAddresse.BackColor = this.rfvTbxAddresse.IsValid ? Color.White : Color.Red;
                this.tbxAddresse.BackColor = this.revTbxAddresse.IsValid ? Color.White : Color.Red;
    ... usw
            }

    Comment


    • #3
      Naja, ich dachte das Problem wäre gelöst, aber gleich von Anfang an
      rote Felder zu haben ist nicht gerade optimal.
      Ich habe mir jetzt überlegt, wie ich die Methode vielleicht direkt bei der
      Validierung starte, leider weiß ich nicht, wo dieser Methodenaufruf stattfinden
      soll.

      Comment


      • #4
        Gibts denn kein Validation Event bei den Validatoren?

        Edit: Grad nachgeschaut - nein gibts nicht... schneller getippt als gedacht

        Comment


        • #5
          Originally posted by F60.2 View Post
          Hab das Problem schon selber bezwungen ^^

          Code:
                  public void CheckValid()
                  {
                      Page.Validate();
                      this.tbxAddresse.BackColor = this.rfvTbxAddresse.IsValid ? Color.White : Color.Red;
                      this.tbxAddresse.BackColor = this.revTbxAddresse.IsValid ? Color.White : Color.Red;
          ... usw
                  }



          Code:
          public void CheckValid()
                  {
                      Page.Validate();
          if(this.tbxAddresse.Text.Lenght>0)
          {
                      this.tbxAddresse.BackColor = this.rfvTbxAddresse.IsValid ? Color.White : Color.Red;
                      this.tbxAddresse.BackColor = this.revTbxAddresse.IsValid ? Color.White : Color.Red;
          }
          ... usw
                  }

          Comment


          • #6
            @fanderlf
            ich hatte mir auch schon sowas gedacht wie,
            "beim prüfenbutton einfach die methode rein ..." allerdings läuft die Validierung vor dem Clickevent an -_-

            @rolfrui
            Das ändert leider gar nichts, vielleicht ist hiermit mehr anzufangen.

            Code:
            public void CheckValid()
                    {
                        Page.Validate();
                        this.tbxAddresse.BackColor = this.revTbxAddresse.IsValid ? Color.White : Color.Red;
                        if (this.tbxAddresse.BackColor != Color.Red)
                        {
                               this.tbxAddresse.BackColor = this.rfvTbxAddresse.IsValid ? Color.White : Color.Red;
                        }
                        ... usw
                    }

            mich nervt es nur, das die Felder gleich von Anfang an rot sind und nicht erst wenn man z.B. einen Button betätigt.

            Comment


            • #7
              Ok, ich hab mich mal schlau gemacht.

              Code:
              <asp:Button ID="btnPruefen" Text="Prüfen" CssClass="button" CausesValidation="false" OnClick="btnPruefen_Click" runat="server" />
              wenn nämlich CausesValidation="false" ist, wird die Validierung beim ButtonClick nicht ausgeführt, dann kann ich meine Methode starten.

              Problem:
              ich kann in meiner ButtonClick Methode zwar Validieren lassen,
              allerdings gibt er mir nicht an, wo die Fehler sind, zumindest nicht in schöner Textform, in dem sonst immer so schönen PopUp-Fenster.

              Weiß jemand wie ich das wieder hinbekomme in der Methode?

              Code:
              public void btnPruefen_Click(object sender, EventArgs e)
              {
                    CheckValid();
                    Validate();
                     ... Hier müsste es hin :-/

              Comment

              Working...
              X