2011-08-19 51 views
1

在ASP.Net datagrid我放置了一个下拉和一个文本框(多行)。我需要在循环中读取这些值。我使用findControl方法获取下拉参考对象,但是当我尝试使用文本框时,它返回null。asp.net datagrid findcontrol返回null为文本框

这里是我的aspx代码

..... 
<asp:TemplateColumn> 
      <HeaderTemplate> 
       <asp:DropDownList 
        ID="HeaderDropDown" Runat="server" 
        AutoPostBack="True" 
        OnSelectedIndexChanged="DropDown_SelectedIndexChanged" /> 
      </HeaderTemplate> 
      <ItemTemplate> 
       <asp:DropDownList 
        ID="ItemDropDown" Runat="server"/> 
      </ItemTemplate> 
     </asp:TemplateColumn> 
      <asp:TemplateColumn > 
      <HeaderTemplate> 
      Details 
      </HeaderTemplate> 

     <ItemTemplate> 

     <asp:TextBox ID="txtDetails" runat="server" TextMode="MultiLine"></asp:TextBox> 

     </ItemTemplate>  
     </asp:TemplateColumn> 
............... 

的C#代码是

for (int i = 1; i < DataGrid1.Items.Count; i++) 
     { 
      DropDownList lst = DataGrid1.Items[i].Cells[1].FindControl("ItemDropDown") as DropDownList; 
      String value = lst.SelectedValue; 
      String StaffId = DataGrid1.Items[i].Cells[0].Text; 
      TextBox txt= DataGrid1.Items[i].Cells[2].FindControl("txtDetaills") as TextBox; 
     } 

我正确地得到LST对象,但TXT总是返回null。

回答

3

你有一个错字:

TextBox txt= DataGrid1.Items[i].Cells[2].FindControl("txtDetaills") as TextBox; 

应该是:

TextBox txt= DataGrid1.Items[i].Cells[2].FindControl("txtDetails") as TextBox; 

因此,txtDetaillstxtDetails

1

txtDetails,而不是txtDetaills - 太多的Ls!