2

我的网页上有一个日历,在page_load活动期间,我将网页设置为采用今天的日期并在 Gridview 中加载今天日期的数据。在 Gridview 中允许分页。

我还有一个Calendar_Selectiondate活动,当有人点击日历中的某个日期时,它会显示该日期的数据。日期值显示在会话变量中。在这种情况下,当我单击分页超链接 2 时,它将带我到当天的第二页,而不是所选日期的第二页。Page_Load我知道这是因为每当我单击该超链接 2 并且日期设置为今天的日期而不是选定的日期时,它都会经历事件。

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();
    }
}
4

2 回答 2

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();
    }
}
于 2012-07-19T20:02:11.190 回答
1

在页面加载事件中,设置这个

if(Page.IsPostback)
   return;

在您的任何其他代码之前执行此操作,这样它就不会在回发时执行。我希望我正确地理解了你。

于 2012-07-19T19:58:08.817 回答