0

データリスト テンプレートで作成したラベルを、dataSource の "item" という名前の列にバインドしたい

いくつかの試行の後、次のコードを使用しました

        DataList2.DataSource = dt;  // my DataSource
        Label l1 = (Label)DataList2.FindControl("itemLabel");
        l1.Text = dt.Rows[0]["item"].ToString();
        DataList2.DataBind();

行「3」で次のエラーが発生しました。正しい式を探しています

Object reference not set to an instance of an object.

任意の助けをいただければ幸いです..

4

1 に答える 1

1

ラベルはNamingConainer( に使用されるFindControl) ではなく、DataListその中の 1 つであるためDataListItems(aDataListは複数のアイテムに使用されます)、null です。

DataBindしたがって、最初にそれを行う必要があり、次にそのItemDataBoundイベントを処理できます。そこで、ラベルとその下にある を見つけることができますDataItem

void Item_Bound(Object sender, DataListItemEventArgs e)
{
   if (e.Item.ItemType == ListItemType.Item || 
       e.Item.ItemType == ListItemType.AlternatingItem)
   {

    // Retrieve the Label control in the current DataListItem.
    Label itemLabel= (Label)e.Item.FindControl("itemLabel");
    DataRow row = ((DataRowView)e.Item.DataItem).Row;
    String item = row.Field<string>("item");
    itemLabel.Text = item;
 }
}
于 2012-12-08T00:30:29.280 に答える