Jag har löst problemet, och det var postback-relaterat. Det gjordes en databind() en gång - när inte postback inträffade. När postback inträffade gjordes ingen mer databind() och då var det inte så konstigt att jag inte kunde uppdatera. Det löste jag genom att låta min procedur som binder datan köras i proceduren för att utföra uppdateringen av en artikel. I page_load kollade jag om sidan gjorde postback eller inte.
'page_load
sub page_load(sender as object, e as eventargs)
if not ispostback then
dim catId as string = fixt(request.querystring("CatId"))
if catId=3 then
articles_binddata()
end if
end if
end sub
Så här ser proceduren för att binda datan ut:
'ladda lista med artiklar
sub articles_binddata()
dim catId as string = fixt(Request.Querystring("CatId"))
dim subId as string = fixt(Request.Querystring("SubId"))
dim artId as string = fixt(Request.Querystring("ArtId"))
dim SQL as string
'visa alla artikelposter
SQL = "SELECT id,category,title,introduction,art_text FROM tbl_articles ORDER BY id DESC"
dim Cn as new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data source=" & Server.MapPath("../dbms/db_articles.mdb"))
dim Cm as new OleDbCommand(SQL, Cn)
Cm.Connection.Open()
adm_articles.DataSource = Cm.ExecuteReader()
adm_articles.DataBind()
Cm.Dispose()
Cn.Close()
end sub
Proceduren för att uppdatera ser nu ut så här:
'uppdatera artikel/utför redigering
sub adm_articles_UpdateCommand(obj as object, e as DatalistCommandEventargs)
dim categoryTxt as integer
dim titleTxt, introductionTxt, textTxt, dtTxt, writerTxt, SQL as string
categoryTxt = cType(e.item.findcontrol("art_category"),htmlselect).selectedindex-1
titleTxt = fixt(cType(e.item.findcontrol("art_title"),htmlinputtext).value)
introductionTxt = fixt(cType(e.item.findcontrol("art_introduction"),textbox).text)
textTxt = fixt(cType(e.item.findcontrol("art_text"),textbox).text)
SQL = "UPDATE tbl_articles SET category=" & categoryTxt & ",title='" & titleTxt & "'" & _
",introduction='" & introductionTxt & "',art_text='" & textTxt & "'" & _
" WHERE id=" & adm_articles.DataKeys(e.Item.ItemIndex)
dim Cn as new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data source=" & Server.MapPath("../dbms/db_articles.mdb"))
dim Cm as new OleDbCommand(SQL,Cn)
Cm.Connection.Open()
Cm.ExecuteNonQuery()
Cm.Dispose()
Cn.Close
[b]articles_binddata()[/b]
end sub
Ni ser också hur minga variabler tar emot värden korrekt. Exempelvis genom
cType(e.item.findcontrol("art_introduction",textbox).text)
Läs mer här: http://datawebcontrols.com/faqs/Editing/EditedValuesNotSaved.shtml
Tackar för svaren som ledde mig rätt! :bire