页面生命周期问题(asp.net)

时间:2011-07-01 04:58:31

标签: c# asp.net events

我在我的页面aspx.cs中有这个事件:

   public void deleteBtn_Click(object sender, CommandEventArgs e)
{

    UsefulStaticMethods.DeleteComment(int.Parse(e.CommandName));        
}

我正在尝试从页面中删除评论。删除成功。但是,在事件发生后,网站界面不会自动更新。

我的页面加载负责使用动态按钮绘制页面上的所有注释(删除注释)。

我知道当删除按钮触发时,页面Load会在之前触发..这有点问题..因为页面加载重新创建页面界面,而deleteBtn_click删除注释,我想更新界面马上“刷新”没有删除评论的页面。

如果我执行一个函数再次绘制整个表,它将绘制另一个注释列表以及在页面Load事件中绘制的注释列表。 我不能拒绝不在page_load绘制注释列表,因为我需要在回发时重新创建的所有内容(包括动态创建的按钮).-无法使用!Ispostback

问题是如何实现这一目标/克服这个问题?

3 个答案:

答案 0 :(得分:2)

通常,如果您使用数据绑定,那么您可以重新绑定有问题的控件。也许,您应该修改绘制注释列表的函数以清除现有列表(可以通过从表控件中删除行或从容器面板或占位符清除控件集合(您可以引入占位符控件仅用于清除目的))。

刷新页面的另一个方法是通过对同一页面执行Server.Transfer来重新启动页面生命周期。一般来说,我不推荐这种方法,除非页面代码结构非常复杂,刷新数据需要多行代码。

答案 1 :(得分:0)

你需要重新控制。假设您的按钮位于网格中,而不是Rebind()网格所需的按钮。如果不是,还有一种方法。将内容放入更新面板,并使用删除按钮设置更新面板触发器。因此,当单击“删除”按钮时,更新面板会导致更新。

答案 2 :(得分:-1)

使用数据列表或转发器服务器控件显示注释,然后在删除后再次绑定服务器控件。在Page_Load上使用!Ispostback。