Avatar billede nannami Nybegynder
24. oktober 2005 - 12:49 Der er 10 kommentarer og
1 løsning

RequiredFieldValidator med dynamisk Error

Hej,

Ville lige høre om der er nogen der ved om det er muligt at sætte dynamisk Errormessage på sin RequiredFieldValidator, eks. en tekststreng fra sin database.

Jeg har prøvet nedenstående, med at lave nogle udtræk, og så sætte fejlmeddelelsen lig min record.

Dvs. istedet for:

<asp:RequiredFieldValidator id="Req" runat="server" ErrorMessage="Please enter your name" ControlToValidate="txtName"></asp:RequiredFieldValidator>

så:

<asp:RequiredFieldValidator id="Req" runat="server"    ErrorMessage="<% RESPONSE.WRITE("OBJREADER("errName") %>" ControlToValidate="txtName"></asp:RequiredFieldValidator>

Det virker bare ikke, den skriver ingenting ud som error i den Req jeg prøver at gøre dynamisk.
Avatar billede dgivoni Nybegynder
24. oktober 2005 - 13:00 #1
Det kan godt lade sig gøre, men det ser ikke helt rigtigt ud det du har skrevet her.
ErrorMessage="<% RESPONSE.WRITE("OBJREADER("errName") %>"
Du har et "-tegn for meget og hvad er det OBJREADER-funktionen gør?
Avatar billede nannami Nybegynder
24. oktober 2005 - 13:18 #2
Hov ja, det gik lige lidt for hurtigt med at skrive eksemplet ned. Jeg mener:

I min kode, noget i stil med:

Sub hent_fejlmeddelelser()
  Dim VariabelError as String
      Sql = "Select errName FROM TabelMedFejlMeddelelser;"   
        If objReader.read() Then 
            VariabelError = objReader("errName")
        End If
End Sub
 
Og så nede i min validator:
 
ErrorMessage="<%Response.write(objReader("errName")%>"

:-)
Avatar billede nannami Nybegynder
24. oktober 2005 - 13:19 #3
Prøver igen:

ErrorMessage="<%Response.write(objReader(VariabelError)%>"
Avatar billede dgivoni Nybegynder
24. oktober 2005 - 13:24 #4
Ok. Men det ser nu stadig en anelse forkert ud.
Du sætter VariabelError = objReader("errName"). Så skal du ikke skrive objReader(VariabelError) når du vil hente fejlmeddelelsen.

Prøv med:
Sub hent_fejlmeddelelser()
  Dim VariabelError as String
      Sql = "Select errName FROM TabelMedFejlMeddelelser;" 
        If objReader.read() Then
            VariabelError = objReader("errName")
        End If
  Return VariabelError
End Sub

...

ErrorMessage="<% Response.write(hent_fejlmeddelelser()) %>"
Avatar billede nannami Nybegynder
24. oktober 2005 - 13:56 #5
Ok, men jeg skal nok have flere fejlmeddelelser ud, så det vil komme til at se således ud:

Sub hent_fejlmeddelelser()
  Dim VariabelError1, VariabelError2, VariabelError3 as String
      Sql = "Select * FROM TabelMedFejlMeddelelser;" 
        If objReader.read() Then
            VariabelError1 = objReader("errName1")
            VariabelError2 = objReader("errName2")
            VariabelError3 = objReader("errName3")
        End If
  End Sub

Skal jeg returnere noget her, og hvad sætter jeg i hver ErrorMessage = ?
Avatar billede dgivoni Nybegynder
24. oktober 2005 - 14:15 #6
Så kunne du tilføje en parameter til funktionen:
Sub hent_fejlmeddelelser(errorNumber As Integer)
  Dim VariabelError1, VariabelError2, VariabelError3 as String
  Sql = "Select * FROM TabelMedFejlMeddelelser;"
  If objReader.read() Then
    VariabelError = objReader("errName" + errorNumber)
  End If
  Return VariabelError
End Sub
...
ErrorMessage="<% Response.write(hent_fejlmeddelelser(1)) %>"

Men har du mere kode end dette her? Er det forkortet eksempel?
Jeg kan ikke helt forstå hvor du får objReader fra og hvornår du sætter sql-queryen?
Avatar billede dgivoni Nybegynder
24. oktober 2005 - 14:16 #7
nå, jeg fik ikke lige ændre Dim linjen til:
Dim VariabelError

I det hele taget plejer jeg at kode i C#, så der kan godt have sneget sig et par syntaks-fejl ind
Avatar billede nannami Nybegynder
27. oktober 2005 - 01:08 #8
Hej igen,

Det er et forkortet eksempel. Der er noget

objComm = New OleDbCommand(SQL, objConn)
objReader = objComm.ExecuteReader()

efter min SQL-sætning. Objreader("errName") er så min første record, som indeholder fejlmeddelse nr. 1 som jeg har hentet fra min DB.

Men den vil virkelig ikke udskrive noget dynamisk når det står som
ErrorMessage = "<% Response.write(Objreader("errName"))%>". Jeg har prøvet at sætte min req til display="dynamic" men det hjælper heller ikke - det er som om den kun kan indeholde tekst der er hardkodet ind i den. Hvis jeg prøver at lave en Response.write(Objreader("errName")) i min kode, inden jeg eksekverer min submit-button, så udskriver den fint den fejlmeddelelse som jeg gerne vil have proppet ned i min ErrorMessage.
Avatar billede dgivoni Nybegynder
27. oktober 2005 - 07:56 #9
har du prøvet med
ErrorMessage="<% Response.write(hent_fejlmeddelelser(1)) %>"

sådan at du kalder din metode, som finder ud af hvilken fejlmeddelse der skal vises via det id du giver den?
Avatar billede nannami Nybegynder
30. oktober 2005 - 15:20 #10
Jeg får fejlen:

  'Return' statement in a Sub or a Set cannot return a value.

Hvis jeg laver den som i din post fra 24/10-2005 14:15:15.
Jeg mener kun du kan returnere en værdi når du arbejder i functions i VB.

Lige en anden ting jeg ikke forstår, her:

    VariabelError = objReader("errName" + errorNumber)

Hvad er errorNumber? Jeg har bare poster liggende i min db, i kolonner kaldet f.eks. errorName1, errorName2, errorNamme3. Så jeg forstår ikke helt hvordan jeg kan lave en hent_fejlmeddelelser(1)).
Avatar billede nannami Nybegynder
05. november 2005 - 16:55 #11
Bliver nødt til at lukke igen, da jeg ikke kan komme videre, men tak for forsøget..
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
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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