我的网页上有一个日历,在 page_load
事件期间,我将网页设置为获取今天的日期并在 Gridview 中加载今天日期的数据。 Gridview 中允许分页。
我还有一个 Calendar_Selectiondate
事件,当有人点击日历中的某个日期时,它将显示该日期的数据。日期值显示在 session 变量中。在这种情况下,当我单击分页超链接 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();
}
}
最佳答案
无论什么触发回发,Page_Load 中的事件都会执行。如果您的代码只应在第一次加载页面时发生,请将其放在 if(!Page.IsPostback) block 中。
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();
}
}
关于asp.net - 当事件触发时,页面从默认值开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11568296/