我有一个简单的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>
答案 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