2

Webページにカレンダーがあり、page_loadイベント中に、今日の日付を取得して今日の日付のデータをグリッドビューにロードするようにWebページを設定しています。グリッドビューではページングが許可されています。

イベントもCalendar_Selectiondateあり、誰かがカレンダーの日付をクリックすると、その日付のデータが表示されます。日付値はセッション変数に表示されます。このシナリオでは、ページングハイパーリンク2をクリックすると、選択した日の2ページ目ではなく、当日の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 に答える