Toon posts:

[ASP.NET - VB] Textbox wijziging opvragen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Het leek zo'n eenvoudig, maar zit er al een aantal uur aan. Ik wil in een Repeater wat data uit een database in textboxen zetten, in de "Text" waarde (vb CheckBox1.Text). Elke record 1 textbox. Vervolgens moet je wijzigingen kunnen maken en deze weer opslaan in dezelfde database over de oude gegevens heen.

Als ik de "Text" waarde wil opslaan blijft ie dezelfde waarde opgeven die ik aan "Text" meegegeven heb, hij pakt de wijziging dus niet.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
dim objConn as new OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" & DatabaseLocatie())

    Dim item As RepeaterItem
    dim PollAntwoordTextBox as TextBox
    dim PollAntwoord as String

    For Each item In Repeater1.Items
        PollAntwoordTextBox = CType(item.FindControl("textbox"), TextBox)
        PollAntwoord = PollAntwoordTextBox.Text
    Response.write(PollAntwoord & "<br>")
    Next item


Iemand een idee wat ik fout doe?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:00
Ik denk dat het iets met postbacks te maken heeft....

Je zult ws in de page-load uw repeater gaan opvullen, en in de button-click event van een of andere button je waardes gaan updaten.
Nu is het zo dat, als je op een button klikt, eerst de page-load event uitgevoerd wordt, en dan pas de button-click event.
Als je in je page-load dus geen rekening houdt met postbacks, dan wordt je repeater opnieuw gevuld met de gegevens van de DB, en in de ButtonClick event wordt je record dan ge-updated met de informatie die op dat moment in je repeater staat, en dat zijn dus opnieuw de originele gegevens...

Waarom sla je de connectionstring trouwens niet op in de web.config ?

[ Voor 7% gewijzigd door whoami op 17-05-2005 17:33 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op dinsdag 17 mei 2005 @ 17:32:
Ik denk dat het iets met postbacks te maken heeft....

Je zult ws in de page-load uw repeater gaan opvullen, en in de button-click event van een of andere button je waardes gaan updaten.
Nu is het zo dat, als je op een button klikt, eerst de page-load event uitgevoerd wordt, en dan pas de button-click event.
Als je in je page-load dus geen rekening houdt met postbacks, dan wordt je repeater opnieuw gevuld met de gegevens van de DB, en in de ButtonClick event wordt je record dan ge-updated met de informatie die op dat moment in je repeater staat, en dat zijn dus opnieuw de originele gegevens...

Waarom sla je de connectionstring trouwens niet op in de web.config ?
Heb nog nooit met de web.config gewerkt, maar zal het eens bestuderen.
Bedankt, lag inderdaad aan de postback, moet nog steeds wennen daaraan...
Hij doet het nu wel alleen vult ie ALLE records in de database met de waarde van de LAATSTE textbox terwijl ik met een Response.write test wel allemaal verschillende waardes krijg.

[ Voor 4% gewijzigd door Verwijderd op 17-05-2005 18:16 ]


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Waar schrijf je de waarde dan naar je DB? ik zie dat nergens staan. Waarschijnlijk doe je dit dus ergens na je loopje. Je PollANtwoord heeft dan idd de waarde van de laatste TextBox. Je zult voor elk record dus de waarde in het loopje moeten vullen aan de hand van een record id.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
rwb schreef op dinsdag 17 mei 2005 @ 18:22:
Waar schrijf je de waarde dan naar je DB? ik zie dat nergens staan. Waarschijnlijk doe je dit dus ergens na je loopje. Je PollANtwoord heeft dan idd de waarde van de laatste TextBox. Je zult voor elk record dus de waarde in het loopje moeten vullen aan de hand van een record id.
Ja sorry, ff de nieuwe code erbij:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    dim objConn as new OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" & DatabaseLocatie())

    Dim item As RepeaterItem
    dim PollAntwoordTextBox as TextBox
    dim PollAntwoord as String

    For Each item In Repeater1.Items
        PollAntwoordTextBox = CType(item.FindControl("textbox"), TextBox)
        PollAntwoord = PollAntwoordTextBox.Text

        dim objUpdateCmd as new OleDbCommand ("UPDATE PollAntwoorden SET antwoord='" & PollAntwoord & "' WHERE pollID=" & request.QueryString("pollID"),  objConn)
        Response.write(PollAntwoord & "<br>")
        try
            objConn.Open
            objUpdateCmd.ExecuteNonQuery
            objConn.Close
        catch
            Response.write("Opslaan mislukt!")
        end try

    Next item

Laat maar zitten, er zit een fout in my query

[ Voor 8% gewijzigd door Verwijderd op 17-05-2005 18:29 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:00
*kuch*
parametrized queries.
*kuch*

Als hij alle records updated, dan wil dat zeggen dat er iets niet klopt aan jouw filter-criteria.
Doe eens ipv een update, een select (in query analyzer bv) op die tabel met dezelfde where-clausule.

[ Voor 74% gewijzigd door whoami op 17-05-2005 23:03 ]

https://fgheysels.github.io/


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
er zit idd een fout in je query. Je selecteerd op een id die je uit de querystring van je url haalt. Deze zal een request lang dus hetzelfde zijn. Je bent dus de hele tijd hetzelfde record aan het updaten.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1