Programmeren in ASP.NET/GridView: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Jbib (overleg | bijdragen)
Jbib (overleg | bijdragen)
Regel 400:
*Om toegang te krijgen tot een bepaalde control binnen een BoundField, kan je e.Row.Cells(i).Controls(0) gebruiken. De index i is daarin het volgnummer van de kolom (te beginnen vanaf 0).
*Om toegang te krijgen tot een bepaalde control binnen een TemplateField, kan je e.Row.Cells(i).FindControl("IDControl") gebruiken. De index i is daarin het volgnummer van de kolom en IDControl is de ID van de control binnen het template.
 
==Bevestiging bij verwijderen==
Hierboven zag je al hoe je gegevens kan verwijderen met een GridView. Het verwijderen gebeurt echter onmiddellijk, zonder bevestiging. Dit betekent dat als je per ongeluk op de delete-knop klikt je het record verwijdert. En dit kan je meestal niet ongedaan maken.
 
Daarom is het goed bij verwijderen altijd bevestiging te vragen. Een goede manier om dit te doen is een client-side JavaScript toe te voegen aan de delete-knop. Dit moet ook in het OnRowDataBound-event gebeuren. Dit is de code:
 
<pre> If (e.Row.RowType = DataControlRowType.DataRow) Then
Dim btnDelete As LinkButton = e.Row.Cells(0).Controls(0)
btnDelete.OnClientClick="return confirm('Ben je zeker?');"
End If</pre>
 
Alleen als de gebruiker op OK klikt zal de pagina nu teruggepost worden, anders gebeurt er gewoon niets.
 
Hierin wordt verondersteld dat de delete-knop in de eerste kolom staat (Cells(0)) en dat hij in die kolom de eerste control is (Controls(0)). Dit laatste is altijd zo bij een Delete-CommandField (er is dan maar 1 control in de kolom), maar niet altijd bij een TemplateField. In dit laatste geval kan je best naar de uitvoer in de trace kijken om te vinden de hoeveelste control het is.
 
===Oefeningen===
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.