2011-08-19 2 views
1

dans la grille de données ASP.Net J'ai placé une liste déroulante et une zone de texte (multiligne). J'ai besoin de lire ces valeurs dans une boucle. J'obtiens l'objet de référence de la liste déroulante en utilisant la méthode findControl mais quand j'essaie de la boîte de texte, elle retourne null.asp.net datagrid findcontrol renvoie null pour la zone de texte

Voici mon code 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> 
............... 

Le code C# est

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; 
     } 

Je reçois correctement le LST objet, mais txt retourne toujours null.

Répondre

3

Vous avez une faute de frappe:

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

devrait être:

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

Par conséquent, txtDetaills devrait être txtDetails

1

txtDetails, pas txtDetaills - trop de Ls!

Questions connexes