login  Naam:   Wachtwoord: 
Registreer je!
 Forum

textbox databinding refresh

Offline cloudstrife - 23/01/2010 22:46
Avatar van cloudstrifePHP beginner Ik heb een datagridview die gevuld wordt met een list(of T) elk object in die lijst bevat een aantal properties. In de datagridview toon ik enkel de belangrijkste zaken, de details worden onderaan getoond in textboxen (een soort master detail als het ware).

Om de textbox te vullen wil ik gebruikmaken van een databinding dus doe ik:
  1. textbox.databindings.add("Text", activeobject, "propertie")

Dit werkt goed, de eerste keer... Maar als ik dan een nieuwe rij kies in de datagridview wordt de data in de textboxen niet automatisch aangepast. Is er nog iets extra dat ik moet doen om aan te tonen dat die data gewijzigd is?

Het "activeobject" in het bovenstaande voorbeeld is een private variabele die het huidige object uit de datagridview bevat, telkens als de rij veranderd, veranderd de inhoud van dit object mee, waardoor ik dacht dat dus ook de inhoud van de textboxen mee zou veranderen...

2 antwoorden

Gesponsorde links
Offline Abbas - 24/01/2010 00:08
Avatar van Abbas Gouden medaille

Crew .NET
Als je dan toch met objecten in een GridView werkt is het toch eenvoudiger om telkens je van rij verandert de juiste property van het object in de juiste TextBox te plaatsen. In het FormLoad event maak je 1 kolom om aan de DataGridView toe te voegen en daarin komt dan de naam. Met het CellClickEvent zorg je dan dat je die rij naar het object cast en de eigenschappen ervan zet je in de juiste TextBox.

  1. Private lstPerson As List(Of Person) = New List(Of Person)
  2. Private p As Person
  3.  
  4. Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  5. p = new Person()
  6. p.Naam = ...
  7. lstPerson.Add(p)
  8. ...
  9. 'Tot er een aantal "Personen" inzitten"
  10.  
  11. gridPersons.AutoGenerateColumns = False
  12. Dim cell = New DataGridViewTextBoxCell()
  13. cell.Style.BackColor = Color.White
  14. Dim col = New DataGridViewColumn()
  15. col.CellTemplate = cell
  16. col.HeaderText = "Voornaam"
  17. col.DataPropertyName = "Naam"
  18. gridPersons.Columns.Add(col)
  19. gridPersons.DataSource = lstPerson
  20. End Sub
  21.  
  22. Private Sub gridCellClick(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) Handles gridPersons.CellClick
  23. If Not e.RowIndex.Equals(-1) Then
  24. p = CType(gridPersons.Rows(e.RowIndex).DataBoundItem, Person)
  25. txtNaam.Text = p.Naam
  26. txtPlaats.Text = p.Plaats
  27. txtJaar.Text = p.Jaar.ToString()
  28. txtGeslacht.Text = p.Geslacht
  29. End If
  30. End Sub
Offline cloudstrife - 24/01/2010 10:36
Avatar van cloudstrife PHP beginner Ik heb de databinding op de textboxen nodig om omdat het object zijn state zou wijzigen als er iets wijzigd van waarde.

Voorlopig heb ik het kunnen oplossen door de databindings te clearen en opnieuw toe te voegen telkens de rij in de datagridview wijzigd.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.167s