21. september 2002 - 16:35Der 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
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
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 ?????
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?
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?
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?
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 :-)
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.
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.