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

C# 页面生命周期问题(asp.net),c#,asp.net,events,C#,Asp.net,Events,我已在我的网页aspx.cs中获得此事件: public void deleteBtn_Click(object sender, CommandEventArgs e) { UsefulStaticMethods.DeleteComment(int.Parse(e.CommandName)); } 我正试图从页面中删除一条评论。删除成功。但是,该事件发生后,网站界面不会自行更新 我的页面加载负责使用动态按钮(删除注释)在页面上绘制所有注释 我知道当“删除”按钮启

我已在我的网页aspx.cs中获得此事件:

   public void deleteBtn_Click(object sender, CommandEventArgs e)
{

    UsefulStaticMethods.DeleteComment(int.Parse(e.CommandName));        
}
我正试图从页面中删除一条评论。删除成功。但是,该事件发生后,网站界面不会自行更新

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

我知道当“删除”按钮启动时,页面加载在。。这有点问题..因为页面加载会重新创建页面界面,而deleteBtn_单击会删除注释,我想立即更新界面。。。“刷新”不包含已删除注释的页面

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


问题是如何实现此目标/克服此问题?

使用数据列表或repeater服务器控件显示注释,然后在删除后再次绑定服务器控件。使用!i在加载时返回第页

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


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

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

我想求助于Response.Redirect。问题是更改发生在事件发生时。。因此,除非按钮事件在pageload之前以某种方式触发,否则它可以将更改通知pageload。但是它没有,所以页面加载,像往常一样加载非最新数据..因为它在有更新的按钮事件之前触发。。。。如果我不生成页面中的所有按钮,请加载并将它们附加到占位符。不会触发任何事件,也不会绘制任何内容。因为所有页面都是动态创建的。。看到了吗?控件的重新绑定在pageload下工作。。但它是接受数据源的datacontrol。。我明白你的意思。。页面加载后仍会触发button事件,因此在删除注释列表之前不会发生删除更改drawn@Dmitry,我不是建议您更改页面加载。我只是说,只要点击按钮,就可以重新绑定数据(或者为注释列表重新创建控制树)。您不应该使用
响应。重定向
,因为这意味着不必要的往返到客户端-
服务器。传输
当然是更好的选择。谢谢..在哪里重新创建控制树?在按钮事件中,重新创建任何内容都是无用的。在pageload或preInit,这是我唯一可以重新创建控件的时间。。你打算如何重新绑定它们。。我有一个表格,每个页面加载时都会动态地重新创建按钮和标签。@Dimitry,为什么不能单击按钮重新创建表格?只需清除先前的表的父表,然后运行代码,再次创建该表即可。如果您正在使用诸如Repeater/ListView之类的控件创建表,那么您可以重新绑定该控件以刷新控件树!iPostback永远不会起作用。。我的整个页面都是动态创建的。页面上只有一个占位符。数据控件听起来很有趣,但我现在不想使用它们