Avatar billede brynil Nybegynder
21. september 2002 - 16:35 Der er 10 kommentarer og
2 løsninger

Insert og ie-Refresh ..hvad gør jeg galt?

Jeg vil godt have hjælp til at finde ud af hvad der sker i nedenstående kode og hvordan jeg kan tilrette den.
1) problem er, hvordan får jeg opdateret siden med tilføjelsen fra tekstboksene, i forbindelse med Submit-tryk. Som det er nu, kommer opdateringen først efter 2 tryk, men så inserter den også 2 gange i db.
2) problem er, at når jeg bruger ie's refresh, så inserter den også i db'en. Jeg ved det ku være et problem i beta, men jeg kører 1.0.3705 med sp2 installeret.
Er der en metode til at nulstille tekstboksene/var efter submit? (bortset fra ="", som ikke virker ved tryk på ie's refresh)

    sub page_load(obj as object, e as eventargs)
        Command.fill(ds, "ForaTbl")
        Repeater1.DataSource = ds.tables("ForaTbl").DefaultView
        DataBind()
        objConnection.close()
    end sub

    Sub bt_submit(obj as object, e as eventargs)
        objConnection.open()
            if not tekst1.text="" then
                var1 = tekst1.text
                var2 = tekst2.text
                    sSql="INSERT INTO ForaTbl (init, kat) VALUES ('" & var1 & "','" & var2 &"')"
                    oCmd = New OleDbCommand(sSql, objConnection)
                    oCmd.ExecuteNonQuery()
            end if   
        objConnection.Close()
    end Sub
Avatar billede odegaard Nybegynder
21. september 2002 - 17:14 #1
Jeg er ikke helt sikker på hvad dit problem er, men jeg tror du skal dele din kode lidt op. Som jeg kan se det, så skal du ikke binde data til din repeater, før efter opdatering (Page_Load bliver kørt før bt_submit).
Dvs.:

  Sub page_load(obj as object, e as eventargs)
      If Not Page.IsPostBack()
          DataBind()
      End If
    End sub

    Sub bt_submit(obj as object, e as eventargs)
        objConnection.open()
            if not tekst1.text="" then
                var1 = tekst1.text
                var2 = tekst2.text
                    sSql="INSERT INTO ForaTbl (init, kat) VALUES ('" & var1 & "','" & var2 &"')"
                    oCmd = New OleDbCommand(sSql, objConnection)
                    oCmd.ExecuteNonQuery()
            end if   
        objConnection.Close()
        DataBind()
    End Sub

    Sub DataBind()
        Command.fill(ds, "ForaTbl")
        Repeater1.DataSource = ds.tables("ForaTbl").DefaultView
        DataBind()
        objConnection.close()
    End Sub
Avatar billede odegaard Nybegynder
21. september 2002 - 17:16 #2
Hov.... bemærkede lige at du allerede har en funktion der hedder DataBind(), så der skal nok lige omdøbes lidt :-)
Eller også skulle der have stået Repeater1.DataBind(), lige inden du lukker objConnection  ?????
Avatar billede brynil Nybegynder
21. september 2002 - 17:29 #3
Hej odegaard!
Nu opdaterer den med det samme. Det er skønt. Men det andet problem mht at den skriver til db ved tryk på iexplorers refresh knap er der stadig. Ved du hvordan det undgås?
Som det er nu skal jeg først manuelt slette tekst i tekstboksene, submitte, for derefter at kunne refreshe uden problemer fra ie.
Har prøvet at nulstille tekstbokse og/eller var'erne, men hvor skal det egentlig gøres fra, hvis det er løsningen?
Avatar billede askhoej Praktikant
21. september 2002 - 17:31 #4
Hej Brynil og Odegaard

Hvad med at lave en Response.Redirect til den samme side i bt_submit og hermed slette indholdt at webkontrollerne, ikke pænt - men det ville vel virke?

/askhoej
Avatar billede brynil Nybegynder
21. september 2002 - 17:37 #5
Det tror jeg egentlig nok kunne lade sig gøre, men som du selv nævner, lyder det ikke rigtigt. Er der ikke en mulighed for at nulstille (er det cache/viewstate/sessionstate det drejer sig om) delvist?
Avatar billede brynil Nybegynder
21. september 2002 - 17:43 #6
Ku man lægge værdierne i session.variable med en hurtig timeout (eller anden mulighed for at 'slukke' dem?
Avatar billede askhoej Praktikant
21. september 2002 - 17:46 #7
Hvis du begynder at rode sessions ind i det, så tror jeg det vil være pænere med en Response.Redirect - som ved nærmere eftertanke vel egentlig ikke er så slem :-)

/askhoej
Avatar billede odegaard Nybegynder
21. september 2002 - 17:49 #8
Nej, det er jo din browser der sender værdierne igen. Du må tjekke for at disse værdier allerede er indsat, eller gøre som askhoej siger.
Avatar billede brynil Nybegynder
21. september 2002 - 17:50 #9
Næh - men jeg tænkte på, at det er den måde asp kører og en fuld genindlæsning af siden er vel en ekstra omkostning, især når .net sku gøre det overflødigt.
Avatar billede askhoej Praktikant
21. september 2002 - 17:50 #10
Jeg tror det med Response.Redirect bliver mit endelig bud på en løsning på den del af problemet :-)

/askhoej
Avatar billede brynil Nybegynder
21. september 2002 - 17:57 #11
Jeg vil ihvertfald prøve med en response.redirect og se hvor det bærer hen.

Nu sku jeg jo dele points ud for de 2 (1) svar. Det synes jeg at have set andre gøre, men hvordan? Nyt spm?

Og askhoej, du må lige smide et svar inden alle points går til odegaard.

Og og Tak for hjælpen.
Avatar billede brynil Nybegynder
21. september 2002 - 17:59 #12
Sådan, håber fordelingen er ok!
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