我有一个带有GridView的网页表单和GridView中的一些控件。我在gridview的EdtItemTemplate中有一个DropDownList。
我需要将此DropDownList与我的CodeBehind文件中的某个方法绑定,该方法返回一个LisItems类型的数组。
我面临的问题是这个。由于Control位于EditItemTemplate中,使用FindControl(“MyControlID”)似乎在任何GridView事件中都不起作用,它返回null,换句话说它似乎无法找到控件,除非我使用OnRowUpdating事件,但我无法使用此事件,因为Control需要在此之前进行数据绑定。
无论如何我可以使用<%#Bind(“MyMethodName”)%>绑定控件?
答案 0 :(得分:0)
试试这个
在App_Code中创建一类数据,像这样
public static class Fruits
{
public static List<string> GetFruits()
{
return new string[] { "Apple", "Mango", "Banana", "Grapes" }.ToList();
}
}
在您的网页上添加一个网格,我猜您已经准备好了
<asp:GridView runat="server" ID="grid" AutoGenerateColumns="false" OnRowEditing="grid_RowEditing">
<Columns>
<asp:TemplateField HeaderText="Selected Fruit">
<ItemTemplate>
<asp:Label runat="server" ID="Fruit" Text='<%# Eval("Fruits") %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList runat="server" ID="fruits" DataSourceID="fruitsDS" />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Edit">
<ItemTemplate>
<asp:Button runat="server" ID="btnEdit" Text="Edit" CommandName="Edit" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
添加一个Object Datasource来绑定你的DropDowns编辑模板
<asp:ObjectDataSource ID="fruitsDS" runat="server" SelectMethod="GetFruits" TypeName="Fruits" />
希望这可以提供帮助。
答案 1 :(得分:0)
试试这个
protected void RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowState == DataControlRowState.Edit)
{
DropDownList dl = (DropDownList)e.Row.FindControl("myList");
dl.DataSource = new string[] { "A", "B" };
dl.DataBind();
}
}
答案 2 :(得分:0)
gridview rowdatabound将用于bind the data to dropdown in gridview.
DropDownList ddl =(DropDownList)e.Row.FindControl(“ddlcity”); ddl.DataSource = s;