当事件触发时,页面从默认值开始

时间:2012-07-19 19:55:35

标签: asp.net gridview paging

我的网页上有一个日历,在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();
    }
}

2 个答案:

答案 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;

在你的任何其他代码之前执行此操作,以便它不会在回发时执行。我希望我能正确理解你。