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 Dynamically populate controls on postback

以下帖子 也可以解决该问题。

于 2012-11-30T23:46:39.223 回答