Under detta har jag även lagt in en spara knapp som ska spara det man ändrar i textbox i tabellen igen.
SQL-satsen ser ut såhär:
Dim cmd as new OleDbCommand("INSERT INTO users(info) VALUES('" & tb1.Text & "') ",cn)
Men nu får jag ett felmeddelande om att tb1 "is not declared" men den är ju tydligt "declaredad" i min repeater.
Då slog mig tanken att när min textbox ligger i repeater så kanske den inte blir hittad i koddelen av sidan. Är det så? Och hur kan jag komma runt problemet? :l
hmm.. okej, jag får testa det imorn, förstår nog inte riktigt såhär på rak arm, men jag gillar att testa mig fram. Ska försöka med dom tips jag fått. Men som sagt, det får bli imorn. Tack så länge iaf. =)
ska jag köra datagrid då eller? och ska textboxen ligga utanför datagriden och sen anropar datagriden textboxen med itemcommand eller ska textboxen ligga i datagrid och sen ska jag använda itemcommand för sql?
förstår inte riktigt :(
någon som kan hjälpa mig? hur ska jag lösa problemet så jag på samma sida kan hämta text från en databas och lägga in det i en textbox och sen också om man klickar på spara få texten i textboxen att sparas i databasen?? HJÄLP!!?? :(
Eftersom du använder en repeater så förutsätter jag att du får en lista med x antal textboxar?
Vill du ändra i flera av textboxarna och sedan genomföra ändringarna i alla textboxarna när du klickar Spara?
grejjen är den att jag är inte säker på vad jag ska använda, troligtvis ska jag inte använda en repeater... jag vill få upp en textruta där folk ska kunna skriva en presentation om sig själva, sedan ska dom kunna spara och då hamnar det i databasen.. nästa gång när dom går in på inställningssidan så ska pressentationstexten finnas kvar i textrutan och dom ska kunna ändra och sedan spara igen. Vilket är det bästa sättet och hur ska jag göra det? Kört fast totalt. :(
Då plockar du ut det databasresultat du behöver och stoppar in det i txtBoxen.Text. Man behöver inte DataBinda för att få in databasresultat i en kontroll.
jag kan redan grunderna i asp.net, jag har bara fått det här med hur man hämtar data från databasen lite om bakfoten. På vilket mer sätt kan man få ut datan till en kontroll om man inte ska använda databind?
jag har tidigare försökt få det jag hämtar från databasen till en sträng men inte lyckats med det och när jag har frågat här har folk hela tiden rekomenderat mig att köra nåt databind istället.
Databind använder man när man ska ha in något i en DataGrid, Repeater, DataList, DropDownList, m.m. Det är när du har fått ut en lista med databasresultat som du ska visa.
I ditt fall så verkar det som att du ska plocka ut användarinformation. Då kör du en DB-fråga som plockar ut den användarens information. Använd en DataReader.
Sedan kan du t.ex. använda
minTextBox.Text = minDataRdr("UserInformation")
För att få in resultatet i textboxen.
Det går att DataBinda enstaka kontroller också. Om du går igenom Tutorials på asp.net så ser du exempel på detta under länken "Data Binding Server Controls".
Jag anser att det tillhör grunderna i asp.net att veta vad man använder kontroller som DataGrid, Repeater, DataList, m.m. till så gå igenom exemplen så att du förstår detta.
okej jag trodde nästan att man kunde göra på det sättet, men alla har sagt att jag skulle köra nåt databinding objekt för att det var bäst.
tack så mycket för hjälpen :)
att kalla det grunderna vet jag inte riktigt, databindingobjekten som har med databaser att göra är ju inte det simplaste i ASP.NET även om det är det man använder mest kanske. jag har läst två böcker om ASP.NET och de tar inte upp databaser (och databinding) förrän efter 1/3 - 1/2 av boken, vilket tyder på att det inte riktigt är grunderna.
Men våra åsikter skiljer sig och det är väl strunt samma. :birp
Men än en gång tack så mycket för hjälpen :)
den säger att den inte hittar någon data i raden/kolumnen, vilket är konstigt eftersom det finns data där.
såhär skrev jag ihop koden, är den fel?
sub page_load(obj as object, e as eventargs)
Dim cn as new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:\Inetpub\databaser\loggin.mdb;")
Dim cmd as new OleDbCommand("select * from users WHERE nick='" + "greggan" + "'" ,cn)
Dim dr as OledbDataReader
cn.Open()
dr = cmd.ExecuteReader()
tb1.text = dr("info")
cn.Close()
end sub
sen är det ju lite konstigt att det ska bli fel om det inte finns någon data i kolumnen, för om det inte finns någon data så vill jag ju att textboxen ska bli tom. Detta kanske man kan lösa med en liten if- eller trysats, men det verkar konstigt ändå.
Har du provat att köra sql-frågan direkt i databasen så att du är säker på att du får tillbaka ett resultat?
Prova även:
Dim cmd as new OleDbCommand("select * from users WHERE nick='greggan'" ,cn)
Ska inte spela någon roll men är det något jag lärt mig genom åren är att aldrig utesluta någonting när jag felsöker bara för att jag "tror" att något ska vara rätt.
Sådär nu löste det sig, det var att jag inte hade gjort en read. Tack så mycket Gladh för det.
Tack även för det där tipset PDahlen.
PDahlen skrev:
Ska inte spela någon roll men är det något jag lärt mig genom åren är att aldrig utesluta någonting när jag felsöker bara för att jag "tror" att något ska vara rätt.
det känns som att det bara blir sjukare och sjukare.
när jag går in på sidan så fylls min textruta med texten från databasen.
när jag sedan ändrar i texten i textrutan och väljer spara (spara_click i koden) så sparas inte texten i databasen så den gamla texten kommer fram igen. Vad är felet?
jag blir inte klok på det här! :q :(
<script runat="server">
sub page_load(obj as object, e as eventargs)
uppdatera()
end sub
sub spara_click(obj as object, e as eventargs)
Dim cn as new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:\Inetpub\databaser\loggin.mdb;")
Dim cmd as new OleDbCommand("UPDATE users SET info = '" & tb1.Text & "' WHERE nick='" + session("userid") + "'",cn)
cn.open()
Cmd.ExecuteNonQuery()
cn.close()
'uppdatera()
end sub
sub uppdatera()
Dim cn as new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:\Inetpub\databaser\loggin.mdb;")
Dim cmd as new OleDbCommand("select * from users WHERE nick='" + session("userid") + "'" ,cn)
Dim dr as OledbDataReader
cn.Open()
dr = cmd.ExecuteReader()
dr.read()
tb1.text = dr("info")
dr.close()
cn.Close()
end sub
</script>
Inte alls konstigt. När du gör din PostBack så hämtar du data från databasen igen i Page_Load och sedan uppdaterar du databasen med PostBack funktionen.
Du måste lägga in