【发布时间】:2013-05-24 14:36:45
【问题描述】:
我在一个包含过滤器字段并返回 WhereClause 的 aspx 页面上有一个用户控件。单击搜索时,用户控件将引发一个名为 FilterApplied 的事件。
在我的主窗体上,我添加了以下控件:
<uc1:Filter runat="server" ID="Filter" /> <br />
在我后面的代码中:
protected void Page_Load(object sender, EventArgs e)
{
//Register event when filter is changed.
this.Filter.FilterApplied += new EventHandler(this.FilterApplied);
if (Page.IsPostBack)
{ //Do some things that take long
}
}
protected void FilterApplied(object sender, EventArgs e)
{
//Reload the page to refresh the graphs.
Page_Load(sender, e);
}
问题是: 当我单击用户控件上的搜索时,Form_Load 运行两次。一次是因为它被重新加载,另一次是因为我从 FilterApplied 调用它。如果我不从 FilterApplied 调用它,那么 where 子句仍然是空的。
如何确保 Page_Load 仅在单击 Search 时运行一次?
【问题讨论】:
-
那么不要从你的
FilterApplied方法调用Page_Load。 -
不工作。 “如果我不从 FilterApplied 调用它,那么 where 子句仍然是空的。”
-
为什么这个问题不清楚或没有用(或显示缺乏研究工作?如果不清楚,我可以尝试纠正它。
标签: c# events user-controls postback