在gridview中找不到控件

时间:2012-04-05 14:20:28

标签: asp.net vb.net

我有一个简单的gridview,其中包含一行中的标签。我试图在RowDataBound事件中访问该标签,但由于某种原因,我不断得到“对象引用未设置为对象的实例”。我正在使用FindControl的行上的错误。

我尝试过使用“gvQReport.FindControl”,“e.Row.FindControl”和“Me.FindControl”,但没有任何效果。

我没有正确地做到这一点吗?

谢谢!

    Protected Sub gvQReport_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
         Dim lblTest As Label = CType(gvQReport.FindControl("lblTest"), Label)
         lblTest.Text = "test Label"
    End Sub


<asp:GridView ID="gvQReport" OnRowDataBound="gvQReport_RowDataBound" runat="server">
     <Columns>
            <asp:TemplateField HeaderText="Test">
                <ItemTemplate>
                    <asp:Label ID="lblTest" runat="server" Text=""></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
     </Columns>
</asp:GridView>

1 个答案:

答案 0 :(得分:6)

GridViewRowEventArgs的{​​{3}}属性是当前行,在那里查找您的控件,而不是整个GridView

Protected Sub gvQReport_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
     If e.Row.RowType = DataControlRowType.DataRow Then
         Dim lblTest As Label = CType(e.Row.FindControl("lblTest"), Label)
         lblTest.Text = "test Label"
     End If
End Sub