Hoi iedereen,
ik ben bezig om een gridview wat gebruikersvriendelijker te maken door een gebruiker een dropdownbox voor te schotelen tijdens het aanpassen van een rij in de gridview. Alleen lukt het me niet...
Ik heb een gridview (ID="GridView1") opgenomen in mijn pagina. Daarin het veld "actief" als templatefield opgenomen.
Wat ik nu graag is dat wanneer een gebruiker besluit een record te wijzigen dat er een dropdownlijst wordt gebruikt om aan te geven of het record nog actief is. Hiervoor gebruik ik 2 events van de gridview.
Ten eerste een event om een geselecteerde waarde uit de dropdownlijst te gebruiken als waarde bij het updaten van het record:
Dit werkt prima. De volgende stap is de dropdownlijst een geselecteerde waarde te geven welke afhankelijk is van het veld "actief". En hier loop ik spaak. Ik ben tot de volgende code gekomen:
Het probleem is nu dat ik de dropdownlijst niet terug kan vinden met findcontrol. De variable ddl blijft een nullpointer. Iemand een idee hoe ik wel een referentie kan krijgen naar die dropdownlijst?
ik ben bezig om een gridview wat gebruikersvriendelijker te maken door een gebruiker een dropdownbox voor te schotelen tijdens het aanpassen van een rij in de gridview. Alleen lukt het me niet...
Ik heb een gridview (ID="GridView1") opgenomen in mijn pagina. Daarin het veld "actief" als templatefield opgenomen.
C#:
1
2
3
4
5
6
7
8
9
10
11
| <asp:TemplateField HeaderText="actief" SortExpression="actief"> <EditItemTemplate> <asp:DropDownList ID="edit_actiefdropdownlist" DataTextField="actief" runat="server"> <asp:ListItem Text="Ja" Value="J" /> <asp:ListItem Text="Nee" Value="N" /> </asp:DropDownList> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Bind("actief") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> |
Wat ik nu graag is dat wanneer een gebruiker besluit een record te wijzigen dat er een dropdownlijst wordt gebruikt om aan te geven of het record nog actief is. Hiervoor gebruik ik 2 events van de gridview.
Ten eerste een event om een geselecteerde waarde uit de dropdownlijst te gebruiken als waarde bij het updaten van het record:
C#:
1
2
3
4
5
6
7
| protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { GridViewRow gvr = GridView1.Rows[GridView1.EditIndex]; DropDownList ddl = (DropDownList)gvr.Cells[4].FindControl("edit_actiefdropdownlist"); e.NewValues["actief"] = ddl.SelectedValue; } |
Dit werkt prima. De volgende stap is de dropdownlijst een geselecteerde waarde te geven welke afhankelijk is van het veld "actief". En hier loop ik spaak. Ik ben tot de volgende code gekomen:
C#:
1
2
3
4
5
6
7
8
9
| if ((e.Row.RowState == DataControlRowState.Edit) || (e.Row.RowState == DataControlRowState.Edit | e.Row.RowState == DataControlRowState.Alternate)) { DataRowView drv = (DataRowView)e.Row.DataItem; DropDownList ddl = (DropDownList)e.Row.Cells[4].FindControl("edit_actiefdropdownlist"); ListItem li = ddl.Items.FindByValue(drv["actief"].ToString()); li.Selected = true; } |
Het probleem is nu dat ik de dropdownlijst niet terug kan vinden met findcontrol. De variable ddl blijft een nullpointer. Iemand een idee hoe ik wel een referentie kan krijgen naar die dropdownlijst?