0

そのため、最初のポストバック後に更新パネルでイベントを呼び出すことができません。イベントはポストバック時にコントロールに割り当てられますが、機能しません。以下のコードは、ポストバック後に追加されたコントロールで何が起こるかです。

                    //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 パーツです。

4

1 に答える 1

0

これは確かにライフサイクルの問題です。次の投稿を見てください。問題と考えられる回避策が説明されています: ASP.Net ポストバックでコントロールを動的に設定する

の 投稿でも、問題の回避策を提供できます。

于 2012-11-30T23:46:39.223 に答える