簡體   English   中英

gridview中的FindControl返回null

[英]FindControl in gridview returns null

我目前處於困境,我的gridview不返回標簽,該標簽位於detailsview內。

我的C#代碼是:

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
    // get pet number for when removing a pet from reservation
    int numberSelected = -1;
    String numbertxt = "-1";

    GridView gv1 = (GridView)sender;
    GridViewRow rvRow = gv1.Rows[gv1.SelectedRow.RowIndex];
    Label numberLbl = (Label)rvRow.Cells[0].FindControl("lblNumber");

    // find selected index, and get number in column 0
    // label within GridView1 within dvReservation DetailsView
    numbertxt = numberLbl.Text;
    ...

網格視圖:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
    DataSourceID="dsObjGet" 
    OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
    <Columns>
        <asp:TemplateField InsertVisible="False" ShowHeader="False">
            <AlternatingItemTemplate>
                <asp:Label ID="lblNumber" runat="server"
                    Text='<%# Eval("NUMBER") %>' Visible="False"></asp:Label>
            </AlternatingItemTemplate>
            <ItemTemplate>
                <asp:Label ID="lblNumber" runat="server" 
                    Text='<%# Eval("NUMBER") %>' Visible="False"></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField ShowHeader="False">
            <AlternatingItemTemplate>
                <asp:Label ID="lblName" runat="server" Text='<%# Eval("NAME") %>'>
                </asp:Label>
            </AlternatingItemTemplate>
            <ItemTemplate>
                <asp:Label ID="lblName" runat="server" Text='<%# Eval("NAME") %>'>
                </asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:CommandField SelectText="Remove" ShowSelectButton="True" 
            CausesValidation="False">
            <ControlStyle CssClass="link" />
        </asp:CommandField>
    </Columns>
</asp:GridView>

當我斷點

Label numberLbl = (Label)rvRow.Cells[0].FindControl("lblNumber");

標簽顯示為null (numberLbl)...

從異常返回的消息是:“對象引用未設置為對象的實例”

編輯:如果我用Eval(“ NUMBER”)在外部gridview(在頁面上)生成lblNumber,這似乎可以解決,盡管我不明白為什么它在我嘗試使用的當前GridView中不起作用,因為GridView1位於DetailsView中。

使用FindControl時,不應使用單元格集合。 只是用這個

GridView gv1 = (GridView)sender;
GridViewRow rvRow = gv1.SelectedRow;
Label numberLbl = (Label)rvRow.FindControl("lblNumber");

暫無
暫無

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

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