0

我遇到了这个错误“对象引用未设置为对象的实例。” 当我尝试设置我从上一页获得会话的值并将其设置在模板字段上时。当我调试它时,会话值在那里(成功会话结束)。我想要做的是显示我在 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; 
4

2 回答 2

1

您可以在 DetailsView 的 DataBound 事件中访问 Label。

于 2013-01-19T13:24:00.700 回答
0

您是否在数据绑定 DetailsView 之前调用 FindControl?如果是这样,它将返回 null - 还没有任何东西可以找到。

于 2013-01-19T13:22:10.313 回答