我在包含筛选字段并返回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只在点击搜索时运行一次?
请不要从你的'FilterApplied'方法调用'Page_Load'。 –
不工作。 “如果我没有从FilterApplied中调用它,那么where条款仍然是空的。” –
为什么这个问题不清楚或没有用(或者显示缺乏研究工作?如果还不清楚,我可以尝试纠正它。) –