protected void gv_MatTemp_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            //ddl_ItemName对象始终找不到,不知道是什么原因?请大家帮我解决!
            DropDownList ddl_ItemName = (DropDownList)e.Row.Cells[6].FindControl("ddl_ItemName");
            DataSet thisDS = (DataSet)this.ViewState["Items"];
            for (int i = 0; i < thisDS.Tables[0].Rows.Count; i++)
            {
                string thisItemName = thisDS.Tables[0].Rows[i][0].ToString().Trim();
                ddl_ItemName.Items.Add(thisItemName);
            }
        }
    }

解决方案 »

  1.   

    能找到ddl_ItemName吗?
    for (int i = 0; i  < thisDS.Tables[0].Rows.Count; i++) 
                { 
      ListItem item = new ListItem(thisDS.Tables[0].Rows[i][0].ToString().Trim(), thisDS.Tables[0].Rows[i][1].ToString().Trim(); );
            ddl_ItemName.Items.Add(item);
    }
      

  2.   

    那你确定是在第七列里吗?那个cell是从0开始算起的。
      

  3.   

    仔细看看e.Row.Cells[6],索引6对不对
      

  4.   

    for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
                {
                   
                        ddl = (DropDownList)GridView1.Rows[i].FindControl("DropDownList1");               
                }
    这样找下
      

  5.   

    你可以不用知道在第几个单元格,就可以找到该控件,如下
     DropDownList ddl_ItemName = (DropDownList)e.Row.FindControl("ddl_ItemName");   
    然后你看下,ddl_ItemName与在控件里的dropdownlist的ID是不是一致的.         
      

  6.   

    你们所说的方法,我都试过了,就是找不到
    <asp:TemplateField HeaderText="會計科目">
                                    <EditItemTemplate>
                                        <asp:DropDownList ID="ddl_ItemName" runat="server">
                                        </asp:DropDownList>
                                    </EditItemTemplate>
                                    <ItemTemplate>
                                        <asp:Label ID="lbl_ItemName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"ITEM_NAME")%>'></asp:Label>
                                    </ItemTemplate>
                                    <HeaderStyle Font-Bold="False" />
                                </asp:TemplateField>
    protected void gv_MatTemp_RowDataBound(object sender, GridViewRowEventArgs e) 
        { 
            if (e.Row.RowType == DataControlRowType.DataRow) 
            { 
                //ddl_ItemName对象始终找不到,不知道是什么原因?请大家帮我解决! 
                  DropDownList ddl_ItemName = (DropDownList)e.Row.Cells[6].FindControl("ddl_ItemName"); 
               
                DataSet thisDS = (DataSet)this.ViewState["Items"]; 
                for (int i = 0; i  < thisDS.Tables[0].Rows.Count; i++) 
                { 
                    string thisItemName = thisDS.Tables[0].Rows[i][0].ToString().Trim(); 
                    ddl_ItemName.Items.Add(thisItemName); 
                } 
            } 
        }
      

  7.   

    1.这个ddl_ItemName是在普通的ItemTemplate中的还是EditItemTemplate中的
    2.已经知道控件名,直接DropDownList ddl_ItemName = (DropDownList)e.Row.FindControl("ddl_ItemName"); 即可,不用管单元格
      

  8.   

     <EditItemTemplate> 
                                         <asp:DropDownList ID="ddl_ItemName" runat="server"> 
                                         </asp:DropDownList> 
                                     </EditItemTemplate>
    改为放在<ItemTemplate>中就可以了:
     <ItemTemplate> 
                                        <asp:DropDownList ID="ddl_ItemName" runat="server"> 
                                         </asp:DropDownList>                                  </ItemTemplate> 
      

  9.   

    直接找 (DropDownList)e.Row.FindControl("ddl_ItemName")
      

  10.   

    回楼上
    1.<EditItemTemplate> 
         <asp:DropDownList ID="ddl_ItemName" runat="server"> </asp:DropDownList> 
       </EditItemTemplate> 
    只有在编辑情况下才会选择数据
    2.不+单元格,我也试过不行!
      

  11.   

    <asp:TemplateField HeaderText="等级">
          <ItemTemplate>
            <%# Eval("xx")%>
          </ItemTemplate>
          <EditItemTemplate>
            <asp:DropDownList ID="ddl_ItemName" runat="server" />
          </EditItemTemplate>
    </asp:TemplateField>这个是前台的代码
      

  12.   

    我只是在item里绑定Label ,因为只有一个值
      

  13.   

    别找了,根本就不存在!
    因为只有编辑状态下才可能创建你要找的DropDownList
      

  14.   


    if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowState == DataControlRowState.Edit)  
            {  
                //ddl_ItemName对象始终找不到,不知道是什么原因?请大家帮我解决!  
                  DropDownList ddl_ItemName = (DropDownList)e.Row.Cells[6].FindControl("ddl_ItemName");             
                DataSet thisDS = (DataSet)this.ViewState["Items"];  
                for (int i = 0; i   < thisDS.Tables[0].Rows.Count; i++)  
                {  
                    string thisItemName = thisDS.Tables[0].Rows[i][0].ToString().Trim();  
                    ddl_ItemName.Items.Add(thisItemName);  
                }  
            }  
      

  15.   

    這樣也不行,
    黨e.Row.RowType == DataControlRowType.DataRow 成立
    ddl_ItemName 還是null
      

  16.   

    参考:http://blog.csdn.net/insus/archive/2008/03/26/2221260.aspx