我的网页上有一个日历,在page_load
活动期间,我将网页设置为今天的日期,并在Gridview中加载今天的数据。 Gridview中允许分页。
我还有一个Calendar_Selectiondate
事件,当有人点击日历中的某个日期时,它会显示该日期的数据。日期值显示在会话变量中。在这种情况下,当我点击分页超链接2时,它将带我到当天的第二页而不是所选日的第二页。我知道这是因为每当我点击超链接2并且日期设置为今天的日期而不是所选日期时,它就会经历Page_Load
事件。
public partial class UKMail_UKMail7Day : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Calendar.SelectedDate = DateTime.Today;
Session["MailDate"] = Calendar.SelectedDate;
UKMail7DayGridView.DataSourceID = "UKMail7DaySelected";
UKMail7DayGridView.DataBind();
//UKMail7DayGridView.DataSourceID = "UKMail7DayAllData";
//UKMail7DayGridView.DataBind();
}
protected void Calendar_SelectionChanged(object sender, EventArgs e)
{
Session["MailDate"] = Calendar.SelectedDate;
UKMail7DayGridView.DataSourceID = "UKMail7DaySelected";
UKMail7DayGridView.DataBind();
}
}
答案 0 :(得分:2)
无论什么触发回发,Page_Load中的事件都会执行。如果您的代码只在第一次加载页面时发生,请将其放在if(!Page.IsPostback)块中。
void Page_Load(object sender, EventArgs e)
{
// code that will execute on every postback, button click, etc.
if(!Page.IsPostback)
{
//code that will only execute the first time the page is loaded.
}
}
强烈 建议阅读:(每个ASP.NET开发人员都应该知道这一点。)http://msdn.microsoft.com/en-us/library/ms178472.aspx
使用更新后的代码进行修改:
public partial class UKMail_UKMail7Day : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostback)
{
Calendar.SelectedDate = DateTime.Today;
Session["MailDate"] = Calendar.SelectedDate;
UKMail7DayGridView.DataSourceID = "UKMail7DaySelected";
UKMail7DayGridView.DataBind();
//UKMail7DayGridView.DataSourceID = "UKMail7DayAllData";
//UKMail7DayGridView.DataBind();
}
}
protected void Calendar_SelectionChanged(object sender, EventArgs e)
{
Session["MailDate"] = Calendar.SelectedDate;
UKMail7DayGridView.DataSourceID = "UKMail7DaySelected";
UKMail7DayGridView.DataBind();
}
}
答案 1 :(得分:1)
在页面加载事件中,设置此
if(Page.IsPostback)
return;
在你的任何其他代码之前执行此操作,以便它不会在回发时执行。我希望我能正确理解你。