OK、リストビューのあるページがあります。リストビューのアイテムテンプレート内には、ユーザーコントロールがあります。このユーザーコントロールは、ホスティングページがイベントをリッスンできるようにイベントをトリガーしようとしています。私の問題は、ハンドラーがnullであるため、イベントがトリガーされないことです。(つまり、EditDateRateSelectedは私のハンドラーであり、デバッグ時はnullです)
protected void lnkEditDate_Click(object sender, EventArgs e)
{
if (EditDateRateSelected != null)
EditDateRateSelected(Convert.ToDateTime(((LinkButton)frmViewRatesDate.Row.FindControl("lnkEditDate")).Text));
}
listvewのアイテムデータバウンドには、イベントハンドラーを追加する場所があります
protected void PropertyAccommodationRates1_ItemDataBound(object sender, ListViewItemEventArgs e)
{
if (e.Item.ItemType == ListViewItemType.DataItem)
{
UserControls_RatesEditDate RatesViewDate1 = (UserControls_RatesEditDate)e.Item.FindControl("RatesViewDate1");
RatesViewDate1.EditDateRateSelected += new UserControls_RatesEditDate.EditDateRateEventHandler(RatesEditDate1_EditDateRateSelected);
RatesViewDate1.PropertyID = (int)Master.PropertyId;
if (!String.IsNullOrEmpty(Accommodations1.SelectedValue))
{
RatesViewDate1.AccommodationTypeID = Convert.ToInt32(Accommodations1.SelectedValue);
}
else
{
RatesViewDate1.AccommodationTypeID = 0;
}
RatesViewDate1.Rate = (PropertyCMSRate)((ListViewDataItem)e.Item).DataItem;
}
}
コントロールがページ内にあり、ページの読み込み時に次の行がある場合、私のイベントコードはすべて正常に機能します。
RatesEditDate1.EditDateRateSelected += new UserControls_RatesEditDate.EditDateRateEventHandler(RatesEditDate1_EditDateRateSelected);
しかし、明らかに、listviewcontrols内のイベントをリッスンする必要があります。
アドバイスをいただければ幸いです。リストビューに対してEnableViewStateをtrueに設定しようとしましたが、違いはありません。コントロールハンドラーを配線することになっている他の場所はありますか?
注-用語が間違っていて、デリゲートをハンドラーなどと呼んでいる場合は、お詫びします:)