Avatar billede dingemann Novice
26. november 2007 - 18:12 Der er 4 kommentarer og
1 løsning

VB > Gridview-elementer og validator

hey der.

Jeg har databounded et griedview til en mssql og puttet nogle Edit og Update-knapper girddet så jeg kan editere i databasen forholdsvist let. Det fungere også ganske godt faktisk. Men jeg vil egentlig gerne have en validator på fx den række hvori der indtastes en start-tid med dato på.
For at MSSQL vil æde inputtet skal det også formateres korrekt og derfor er en validator faktisk ret essentiel. Jeg har fundet ud af at MSSQL vil æde inputtet hvis jeg formatere det som yyyyMMdd HH:mm:ss så i min customValidator har jeg lavet en Try-Catch der tager inputtet og formatere det tilbage til tekstboksen. Dvs at fx et input som 10/30 1956 14:01:29 bliver smidt ud som 19561030 14:01:29 i tekstbox1.text
Problemet er bare at jeg ikke kan fange tekstbox1.text i gridviewet fra min customvalidator - altså jeg kan ikke sendte outputtet til tekstbox'en. Hvordan filan får jeg sendt teksten. Jeg har selvfølgelig prøvet med en GriedView1.TextBox1.Text men TextBox1.Text er ikke tilgængelig fra GridView1 - nogle ideer?
CustomValidatorkoden er som følger


      Protected Sub startValidator(ByVal source As System.Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs)
        Dim myDate As Date
        Dim myNewDate As String
        Try

            myDate = CDate(TextBox1.Text)
            myNewDate = Format(myDate, "yyyyMMdd HH:mm:ss")
            TextBox1.Text = myNewDate
            args.IsValid = True
        Catch ex As Exception
            args.IsValid = False

        End Try
    End Sub
Avatar billede neoman Novice
26. november 2007 - 18:59 #1
Du har en Update event som systemet kalder inden rækken bliver sendt til db'en. I handleren for denne event kan du skrive

dim myTextBox as TextBox = GridView1.Rows(e.RowIndex).FindControl("TextBox1") og så manipulere myTextBo.Text

hvis du vitterligt har en TextBox i et templatefield.

Ellers, hvis du bare har en almindelig row så er det noget med:

DIm myString as GridView1.Rows((e.RowIndex).Cells(cellIndex).Value

hvor cellindex er kolonneindekset for den celle værdien sidder i.

e er event argument og den har sikkert et index for det row som skal opdateres: check intellisense når du taster "e."
Avatar billede neoman Novice
26. november 2007 - 19:00 #2
DIm myString as String= GridView1.Rows((e.RowIndex).Cells(cellIndex).Value
Avatar billede dingemann Novice
29. november 2007 - 15:24 #3
undskyld det sene svar... men det var faktisk brugbart :) så tak. Point?
Avatar billede neoman Novice
29. november 2007 - 15:31 #4
:P
Avatar billede dingemann Novice
29. november 2007 - 15:35 #5
tis!
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