2
我跟着其他一些問題嘗試解決此問題,但它們似乎不適用於我的案例。 This is an example。從位於中繼器控件內的用戶控件調用父頁面中的方法
在我的情況下,用戶控件的一個實例在中繼器中多次加載,我懷疑這與我遇到的問題有關。
我使用此方法將事件附加到用戶控件的每個實例。
protected void rptPosts_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView MyRow = (DataRowView)e.Item.DataItem;
Post MyPost = (Post)e.Item.FindControl("Post");
MyPost.UserControlButtonClicked += new EventHandler(MyPost_UserControlButtonClicked);
MyPost.LoadPost(MyRow);
}
}
private void MyPost_UserControlButtonClicked(object sender, EventArgs e)
{
// reload repeater items
}
裏面我後面的用戶控件的代碼把這個代碼:
public event EventHandler UserControlButtonClicked;
private void OnUserControlButtonClick()
{
if (UserControlButtonClicked != null)
{
UserControlButtonClicked(this, EventArgs.Empty);
}
}
和用戶控件內的按鈕(也應該觸發頁面方法)我把這個:
protected void lnkDelete_Click(object sender, EventArgs e)
{
// Code to delete record //
OnUserControlButtonClick();
}
問題似乎是if (UserControlButtonClicked != null)
似乎總是返回false,因此UserControlButtonClicked(this, EventArgs.Empty);
永遠不會執行。
它的工作原理!感謝您的及時回覆! – Osprey
@Osprey:沒問題。樂意效勞 – Arion