0

「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが発生しました。前のページからセッションを行った値を設定しようとして、それをテンプレート フィールドに設定しようとしたとき。私がそれをデバッグしたとき、セッション値はそこにありました(セッションオーバーに成功しました)。私がやろうとしているのは、セッションの値を詳細ビューに表示することです。

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();
   } 

なぜ詳細ビューからコントロールを取得できなかったのか疑問に思っていました??

編集

    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 に答える