2016-06-08 3 views
1

У меня есть gridview, у которого есть столбцы для дней недели. Я запустил этот код на первом куске страницы, чтобы даты были правильными.View State не работает правильно Asp.Net C#

if (!IsPostBack) {//my public function to set the dates, It works as expected. 
      setUpGrid(); 
       } 

Тогда у меня есть кнопка, которая при нажатии будет отображаться на следующей неделе 7 дней в будущем. Это все работает, а вот код

protected void NWeeks_Click (object sender, EventArgs e) 
     {DateTime hd2 = Convert.ToDateTime (gvappts.Columns [2].HeaderText); 
      if (ViewState ["hd2"] == null) 
       {ViewState ["hd2"] = 0;} 
      ViewState ["hd2"] = ((int)ViewState ["hd2"]) + 7; 
      gvappts.Columns [2].HeaderText = hd2.AddDays ((int)ViewState["hd2"]).ToString ("ddd dd MMM", 
      CultureInfo.CreateSpecificCulture ("en-US")); 
     } 

Моя проблема, вы должны нажать кнопку дважды, прежде чем она будет срабатывать от следующей недели расчетов. Я думал, что ViewState позаботится об этом, но не уверен, где я ошибаюсь.

Благодаря передовой

ответ

1

я понял, после того, как смотреть на это некоторое время, что, поскольку я имею дело с GridView, чтобы освежить HeaderText вы также должны DataBind в GridView. Добавление простого GridviewName.DataBind(); к моей функции решена моя проблема.

Спасибо за помощь!

0

Я полагаю, вы могли бы переместить свой код в событие Page_LoadComplete, чтобы гарантировать, что все элементы управления загружаются при setUpGrid() называется.

Заканчивать ASP.Net Page Life Cycle

void Page_LoadComplete(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     setUpGrid(); 
    } 
} 
Смежные вопросы