我遇到了这个错误“对象引用没有设置为对象的实例。”当我试图设置一个值,我从上一页开始会话并将其设置在模板字段上。当我调试它时,会话值就在那里(成功会话结束)。我想要做的是在detailsview上显示我的会话值。
aspx:
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False">
<Fields>
<asp:TemplateField HeaderText="Order Number " SortExpression="poNum">
<ItemTemplate>
<asp:Label ID="test" runat="server" Text='<%# Bind("poNum") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Fields>
</asp:DetailsView>
代码背后的代码:
protected void Page_Load(object sender, EventArgs e)
{
((Label)DetailsView1.FindControl("test")).Text = Session["poNum"].ToString();
}
我想知道为什么我无法从detailsview获得控件?
编辑
Label aaa = new Label();
aaa.Text = Session["poNum"].ToString();
Label orderNum = (Label)DetailsView1.FindControl("test"); // orderNum was null here
orderNum.Text = aaa.Text;
答案 0 :(得分:1)
您可以访问DetailsView的DataBound事件中的Label。
答案 1 :(得分:0)
在数据绑定DetailsView之前,您是否在调用FindControl?如果是这样,它将返回null - 尚未找到任何内容。