视图状态无法正常工作 Asp.Net c#

View State not working correctly Asp.Net c#

我有一个包含星期几的列的 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 会解决这个问题,但不确定我哪里出错了。

先谢谢了

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

查看ASP.Net Page Life Cycle

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

我看了一会儿后意识到,由于我正在处理 GridView 以刷新 HeaderText,因此您还必须对 Gridview 进行数据绑定。添加一个简单的GridviewName.DataBind();我的功能解决了我的问题。

感谢您的帮助!