そのため、最初のポストバック後に更新パネルでイベントを呼び出すことができません。イベントはポストバック時にコントロールに割り当てられますが、機能しません。以下のコードは、ポストバック後に追加されたコントロールで何が起こるかです。
//Add Delete Control
up.ContentTemplateContainer.Controls.Add(new LiteralControl("<div class=\"news_delete\">"));
LinkButton deleteLink = new LinkButton();
deleteLink.ID = item.ID.ToString();
deleteLink.Text = "Delete This News Item";
deleteLink.Click += new EventHandler(DeleteNewsItem);
up.ContentTemplateContainer.Controls.Add(deleteLink);
up.ContentTemplateContainer.Controls.Add(new LiteralControl("</div>"));
コントロールが更新パネルに追加されて表示されますが、リンク ボタンをクリックしても DeleteNewsItem イベントが実行されません。イベントは以下で見ることができます。
//OnSubmits
void DeleteNewsItem(object sender, EventArgs e)
{
SPList newsList;
SPWeb web = SPContext.Current.Web;
web.AllowUnsafeUpdates = true;
web.Update();
newsList = web.Lists["News Wire"];
SPListItemCollection items;
items = newsList.Items;
LinkButton item2Delete = (LinkButton)sender;
SPListItem item = items.GetItemById(Int32.Parse(item2Delete.ID));
item.Delete();
newsList.Update();
web.AllowUnsafeUpdates = false;
System.Web.HttpContext.Current.Response.Redirect(SPContext.Current.Web.Url);
}
そのため、更新パネルでポストバックを行う前に、機能することをもう一度繰り返したいと思います。つまり、この削除コントロールが機能し、リスト アイテムを削除するアイテムの最初のセットですが、非同期ポストバックを実行すると、クリックしてもイベントが実行されません。ブレークポイントを設定しましたが、ブレークポイント (イベント) に到達しません。これは、Web パーツのライフサイクルやページのライフサイクルと関係があるのでしょうか。誰か助けてください。ちなみに、これは視覚的な Web パーツではなく、Web パーツです。