Avatar billede midas_dk Nybegynder
03. december 2003 - 17:10 Der er 9 kommentarer og
1 løsning

Flere dynamiske Validators på samme TextBox

Hejsa!

Jeg har et problem - jeg sidder med en dynamisk mailform-generator, som ikke helt vil, som den skal.

Som det forhåbentlig fremgår af nedenstående kode vil jeg gerne have en given række tilføjet en tabel. Det går fint.
Jeg vil også gerne have TextBoxen valideret af to forskellige validators "samtidig" - og det er hér, det går galt...
Jeg er godt klar over, at man "bare" kan lave en RegExp, der også tjekker på om feltet er tomt, men i denne henseende er det ikke optimalt. Det er også vigtigt, at man kan slå RequiredFieldValidatoren fra og til via IsRequiredField...

Når jeg bruger nedenstående kode, NÆGTER RequiredFieldValidatoren at virke. RegExp'en virker som den skal, men den bliver jo heller ikke enabled dynamisk - og det er dét, jeg tror er problemet.

Nogen der kan se fejlen?

        public TableRow getEmailRow(bool IsRequiredField)
        {
            TableRow tr = new TableRow();
            TableCell td1 = new TableCell();
            TableCell td2 = new TableCell();
            TableCell td3 = new TableCell();
           
            Label lbl = new Label();
            lbl.Text = "Email: ";

            TextBox txt = new TextBox();
            txt.Width = 225;
            txt.ID = "MailText1";

            RequiredFieldValidator val2 = new RequiredFieldValidator();
            val2.ErrorMessage = "*";
            val2.Text = "*";
            val2.ControlToValidate = txt.ID;
            val2.EnableClientScript = true;
            val2.Enabled = IsRequiredField;
            td3.Controls.Add(val2);
                           
            RegularExpressionValidator val = new RegularExpressionValidator();
            val.ErrorMessage = "Ugyldig emailadresse";
            val.ValidationExpression = "\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
            val.ControlToValidate = txt.ID;
            val.EnableClientScript = true;

            td1.Controls.Add(lbl);
            td2.Controls.Add(txt);
            td2.HorizontalAlign = HorizontalAlign.Right;
            td3.Controls.Add(val);

            tr.Controls.Add(td1);
            tr.Controls.Add(td2);
            tr.Controls.Add(td3);
           
            return tr;
        }
Avatar billede lauge Nybegynder
03. december 2003 - 17:17 #1
du kan sætte dette her på din button :
causesvalidation="False"

så bruger den ikke dit validerings script...
Avatar billede midas_dk Nybegynder
03. december 2003 - 17:30 #2
lauge >> ???

Det er jo netop det den skal... Hvis jeg sætter CausesValidation="false" på min Button, vil den ikke engang køre RegExp valideringen. Det er KUN RequiredFieldValidator, der skal kunne slås fra.
Avatar billede lauge Nybegynder
03. december 2003 - 17:50 #3
sorry - jeg sov i timen....
Avatar billede hessner Nybegynder
03. december 2003 - 17:52 #4
Går ud fra at du kalder således: getEmailRow(True) og ikke getEmailRow(False) ?

Du kører begge dine valideringer clientside og kun den ene virker, er det rigtig forstået ?

Prøv at lav en "view source" på klienten og kik efter: MailText1, se om der står det rigtige id begge steder.

Prøv eventuelt:
val2.ControlToValidate = txt.UniqueID; istedet for
val2.ControlToValidate = txt.ID;

Det er alt jeg lige kan komme i tanke om :-)

MVH.
Hessner.
Avatar billede hessner Nybegynder
03. december 2003 - 17:53 #5
Ups, ny her - det var selvfølgelig et svar....

Går ud fra at du kalder således: getEmailRow(True) og ikke getEmailRow(False) ?

Du kører begge dine valideringer clientside og kun den ene virker, er det rigtig forstået ?

Prøv at lav en "view source" på klienten og kik efter: MailText1, se om der står det rigtige id begge steder.

Prøv eventuelt:
val2.ControlToValidate = txt.UniqueID; istedet for
val2.ControlToValidate = txt.ID;

Det er alt jeg lige kan komme i tanke om :-)

MVH.
Hessner.
Avatar billede midas_dk Nybegynder
03. december 2003 - 18:00 #6
hessner >> Hmm... UniqueID er da en mulighed, men det fungerer i princippet fint med .ID, i og med at TextBoxen jo er dynamisk oprettet. Jeg tjekker det i løbet af morgendagen - er kommet hjem i mellemtiden ;-)

Og ja - naturligvis kalder jeg getEmailRow med true, når feltet er defineret som required - men det er ligeyldigt hvad jeg kalder den med, så virker møget alligevel ikke :-(

Jeg har endda prøvet at Enable val2 ved at skrive

val2.Enabled = true;

- men lige meget hjælper det.
Avatar billede quaser Nybegynder
03. december 2003 - 21:01 #7
Virker reqfv hvis du ikke tilføjer RegExp tjekket?
Avatar billede midas_dk Nybegynder
04. december 2003 - 12:13 #8
hessner >> UniqueID gør ingen forskel... Jeg har afvist dit svar :-/

quaser >> Faktisk ikke - meget, meget mystisk...
Avatar billede hessner Nybegynder
04. december 2003 - 18:16 #9
"View source" på klienten og kik client side scriptet igennem...
Avatar billede midas_dk Nybegynder
22. januar 2004 - 16:02 #10
Jeg lukker - jeg kunne kun få det til at virke ved at bruge "statiske" validators. Dvs. jeg har lavet hele systemet om. *suk*
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester