DavidBMedlem sedan jan. 20001 372 inlägg har gjort en custom validator som jag inte får att funka, den är till för att kolla om ett användarnamn redan finns i databasen.
void UsernameExists(object source, ServerValidateEventArgs value){
string connectionString = "Driver={MySQL};Database=blabla";
string SQL = "select username from users where username = 'bla'";
OdbcConnection conn = new OdbcConnection(connectionString);
OdbcCommand cmd = new OdbcCommand(SQL);
cmd.Connection = conn;
conn.Open();
OdbcDataReader reader = cmd.ExecuteReader();
if(reader.Read()){
value.IsValid = false;
}
else{
value.IsValid = true;
}
reader.Close();
conn.Close();
return;
}
nån som kan se nåt fel i koden?
icaaqMedlem sedan okt. 20005 273 inlägg Jag är ju ingen .NET guru men kan du ha void när du ska returnera ett värde ?
sen vet jag inte men kanske detta hjälper
[red]
if(reader.Read()){
return false;
}
else{
return true;
}[/red]
men det sista är ju bara en chansning ;)
GrynetMedlem sedan maj 2001329 inlägg har du inte bara vänt på if saten?
bör den inte vara??
if(reader.Read()){
value.IsValid = true;
}
else{
value.IsValid = false;
}
Sen för att göra det lite snyggare :)
value.IsValid = reader.Read();
Och du behöver inte ha return i slutet av funktionen
DavidBMedlem sedan jan. 20001 372 inlägg kolla här använder de void
http://samples.gotdotnet.com/quickstart/util/srcview.aspx?path=/quickstart/aspplus/samples/webforms/ctrlref/webctrl/CustomValidator/CustomValidator1.src
jag tror inte att jag har vänt på if satsen för om den hittar ett värde så ska den ju skriva ut ett meddelande att det redan finns en användare registrerad med det användarnamnet.
DavidBMedlem sedan jan. 20001 372 inlägg testade lite mer och kom då fram till att det inte är något fel på koden.
jag kopierade den in på en annan sida utan någon annat kod och testade att validera en textbox.
jag testade att lägga in:
if(reader.Read()){
value.IsValid = false;
[b]Response.Write("false");[/b]
}
else{
value.IsValid = true;
[b]Response.Write("true");[/b]
}
och när jag kör sidan så skriver den ut false men den godkänner det ändå och jag kommer in på nästa sida.
nån som har nån idé?
ZyaxMedlem sedan mars 200262 inlägg Det räcker nog inte med Response.Write inne i funktionen. Testa istället att skriva ut värdet utanför funktionen.
Vad jag förstår skickar du bara value in i blocket och value är sedan glömt, eller?
Skall du få ut värdet måste du garantera att value skickas som referens (pass-by-reference)
GrynetMedlem sedan maj 2001329 inlägg Det är nog inget fel på den koden du postat här utan på din sida så posta hela den.
DavidBMedlem sedan jan. 20001 372 inlägg jag löste det.
alltihop låg i en asp:Panel och när man tryckte på submit så skulle nästa panel visas, och eftersom min customvalidator validerades på servern så visades den inte för att panelen den låg i inte visades.
löste det genom att lägga in:
if(Page.IsValid){
koden
}
i funktionen som bytte panel