簡體   English   中英

asp.net datagrid findcontrol為textbox返回null

[英]asp.net datagrid findcontrol returns null for textbox

在ASP.Net datagrid中,我放置了一個下拉列表和一個文本框(多行)。 我需要在循環中讀取這些值。 我使用findControl方法獲取下拉列表的引用對象,但是當我嘗試使用textbox時,它返回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。

你有一個錯字:

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

應該:

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

因此, txtDetaills應該是txtDetails

txtDetails ,而不是txtDetaills - 太多Ls!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM