asp.net - 当事件触发时,页面从默认值开始

标签 asp.net gridview paging

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

相关文章:

c# - 验证字符串是否存在于列表中

c# - 设置 runat ="server"时图像不显示

java - 我正在尝试获取图像的 ID 以在全 View 中显示它

asp.net - 在vb.net中根据特定条件清除gridview

java - hibernate中实现结果分页(获取总行数)

c# - .Net - 随机排序的自定义分页

asp.net GridView分页器消失了!

javascript - 创建一组元素的新实例

asp.net - "There was an error while performing this operation"

android - 如何强制 GridView 加载单元格