C# 在运行时在GridView中添加并查找Dropdownlist

C# 在运行时在GridView中添加并查找Dropdownlist,c#,asp.net,gridview,C#,Asp.net,Gridview,在我的asp.net应用程序中,我使用了Gridview控件,在该控件中,我必须在运行时为每个单元格添加Dropdownlist。我能够成功绑定该控件。 下面是我在行数据绑定事件中的代码 foreach (GridViewRow row in gdvLocation.Rows) { if (row.RowType == DataControlRowType.DataRow) { for (int i = 1; i < row.Cells.Count; i++) {

在我的asp.net应用程序中,我使用了Gridview控件,在该控件中,我必须在运行时为每个单元格添加Dropdownlist。我能够成功绑定该控件。 下面是我在行数据绑定事件中的代码

foreach (GridViewRow row in gdvLocation.Rows) {
    if (row.RowType == DataControlRowType.DataRow) {
        for (int i = 1; i < row.Cells.Count; i++) {
            var dlRouteType = new DropDownList();
            dlRouteType.ID = "ddlRouteType";
            dlRouteType.DataSource = GetRouteTypeList();
            dlRouteType.DataTextField = "RouteType";
            dlRouteType.DataValueField = "Id";
            dlRouteType.DataBind();
            row.Cells[i].Controls.Add(dlRouteType);
        }
    }
}
但我在下拉对象中得到null。我甚至在aspx页面中添加了更新面板。欢迎任何建议。 提前谢谢
Sangeetha

您的代码中有这些错误

  • RowDataBound已经遍历了每一行,所以您不需要在顶部编写
    foreach
  • 您正在从索引1进行迭代,索引是基于零的。所以从零开始
  • DropDownList ID必须是唯一的,因此最好编写如下内容,
    dlRouteType.ID=“ddlRouteType_uu1;”+i
  • 代码应该是

    protected void gdvLocation_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        //removed the foreach loop
        var row = e.Row;
        if (row.RowType == DataControlRowType.DataRow)
        {
            for (int i = 0; i < row.Cells.Count; i++) //changed index
            {
                var dlRouteType = new DropDownList();
                dlRouteType.ID = "ddlRouteType_" + i; //gave unique id
                dlRouteType.DataSource = GetRouteTypeList();
                dlRouteType.DataTextField = "RouteType";
                dlRouteType.DataValueField = "Id";
                dlRouteType.DataBind();
                row.Cells[i].Controls.Add(dlRouteType);
            }
        }
    }
    
    protectedvoid gdvLocation_RowDataBound(对象发送方,GridViewRowEventArgs e)
    {
    //移除了foreach循环
    var行=e行;
    if(row.RowType==DataControlRowType.DataRow)
    {
    对于(int i=0;i
    您可能在错误的单元格中查找,请尝试使用row.FindControl(“ddlRouteType”);另外,请确保在回发时不会重新绑定gridview。是否要将ddl添加到每行的每一列?您应该发布整个按钮单击处理程序
    protected void gdvLocation_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        //removed the foreach loop
        var row = e.Row;
        if (row.RowType == DataControlRowType.DataRow)
        {
            for (int i = 0; i < row.Cells.Count; i++) //changed index
            {
                var dlRouteType = new DropDownList();
                dlRouteType.ID = "ddlRouteType_" + i; //gave unique id
                dlRouteType.DataSource = GetRouteTypeList();
                dlRouteType.DataTextField = "RouteType";
                dlRouteType.DataValueField = "Id";
                dlRouteType.DataBind();
                row.Cells[i].Controls.Add(dlRouteType);
            }
        }
    }