Alright I've been beating my head against this one for a while I'm trying to replace the default text box with a DropDownList when I edit a row of a DataGrid. The drop down is present when I hit the edit button, but it isn't populated. What am I doing wrong here?
This is my datagrid
xml
<div id="dish_list">
<asp:DataGrid ID="dgDishList" runat="server" AutoGenerateColumns="false"
CssClass="dataGrid" OnEditCommand="EditDishList" OnCancelCommand="CancelDishEdit"
OnItemDataBound="dgDishList_ItemDataBound">
<HeaderStyle CssClass="HeaderStyle" />
<ItemStyle CssClass="ItemStyle" />
<AlternatingItemStyle CssClass="AlternatingItemStyle" />
<EditItemStyle CssClass="EditItemStyle" />
<Columns>
<asp:BoundColumn DataField="DISH_ORDINAL" HeaderText="#" ReadOnly="true" />
<asp:TemplateColumn HeaderText="Dish Type">
<ItemTemplate>
<asp:Label ID="lblDLDishType" runat="server"
Text='<%# DataBinder.Eval(Container.DataItem, "dish_type_desc") %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="ddlDLDishTypes" runat="server" />
</EditItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="DISH_TYPE_DESC" HeaderText="Type" />
<asp:BoundColumn DataField="DISH_NAME" HeaderText="Name" />
<asp:EditCommandColumn HeaderText="Edit" EditText="Edit"
UpdateText="Update" CancelText="Cancel" />
</Columns>
</asp:DataGrid>
And here's my code-behind
csharp
protected void dgDishList_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.EditItem)
{
Control ctrl = e.Item.FindControl("ddlDGDishList");
if (ctrl != null)
{
DropDownList ddlDishTypes = (DropDownList) ctrl;
ddlDishTypes.DataSource = app.dishTypes();
ddlDishTypes.DataTextField = "dish_type_desc";
ddlDishTypes.DataValueField = "dish_type";
ddlDishTypes.DataBind();
}
}
}
What am I doing wrong?
This post has been edited by 5thWall: 6 Oct, 2008 - 08:32 AM