2011-08-19 81 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!