查看状态无法正常工作Asp.Net c#

时间:2016-06-08 13:37:34

标签: c# asp.net viewstate

我有一个gridview,其中包含一周中的日期列。 我在页面的第一个载荷上运行此代码,以便日期正确。

  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会照顾这个,但不确定我哪里出错了。

谢谢高级

2 个答案:

答案 0 :(得分:1)

我在看了一段时间之后意识到,因为我正在处理GridView以刷新HeaderText,所以你还需要DataBind Gridview。添加一个简单的GridviewName.DataBind();我的功能解决了我的问题。

感谢您的帮助!

答案 1 :(得分:0)

我想您可以将代码移动到Page_LoadComplete事件,以确保在调用setUpGrid()时加载所有控件。

查看ASP.Net Page Life Cycle

void  Page_LoadComplete(object sender, EventArgs e)
{
    if (!IsPostBack) 
    { 
       setUpGrid ();
    }
}