Visual Studio heeft een hele handige toolbar met allerlei handige dingen die je zo in je webpagina kan slepen. Een daarvan is de GridView. Dit ding is erg handig voor als je eenvoudig data uit een database wil laten zijn. Eigenlijk is het niks anders dan een tabel generator van dynamische data. Maar dan met wat extra’s zoals bijvoorbeeld de mogelijkheid om eenvoudig paging aan te zetten. Of het mogelijk maken om data te bewerken.
Ook is het mogelijk om doormiddel van een regel select een ouder-/kindrelatie te maken. Alleen als je meerdere regels wilt selecteren loop je tegen een probleem op. Standaard wordt geen multi select ondersteund.
Dit is op te lossen door zelf aan de al bestaande kolommen een kolom toe te voegen.
Stap 1: Maak een GridView.
Stap 2: Klik op edit Columns
Stap 3: Voeg een template field toe.
Stap 4: Zet in de source van je pagina het volgende in het templatefield
| 1 | |
| 2 | <asp:TemplateField HeaderText="Selecteer"> |
| 3 | <ItemTemplate> |
| 4 | <asp:CheckBox ID="checkSel" runat="server" /> |
| 5 | </ItemTemplate> |
| 6 | </asp:TemplateField> |
| 7 | |
Als het goed is krijg je als je nu de pagina laad al een GridView met select boxjes te zien.
Alleen hoe kunnen we nou kijken of die rij geselecteerd is?
Stap 5: Sleep een knop naar je pagina en ga naar het onclick event.
Stap 6: Plak onder het onclick event onderstaande code
| 01 | |
| 02 | |
| 03 | foreach (GridViewRow rij in GridView1.Rows) //Voor elke rij in de collectie met rijen in de gridview |
| 04 | { |
| 05 | //Zoek te CheckBox in deze rij en zet die in box. |
| 06 | CheckBox box = ((CheckBox)rij.FindControl("checkSel")); |
| 07 | |
| 08 | if (box.Checked) //Als de box is geselecteerd |
| 09 | { |
| 10 | //Doe iets.... Hier kan je ook data gebruiken uit de betreffende rij. Bijvoorbeeld het id. |
| 11 | Label1.Text = rij.Cells[3].Text; |
| 12 | |
| 13 | //Je kan ook de eigenschappen van de checkbox veranderen. Maar dat heeft alleen effect als je de gridview niet refreshed. |
| 14 | |
| 15 | box.Enabled = false; |
| 16 | box.Checked = false; |
| 17 | } |
| 18 | } |
| 19 | |