为什么我在页面加载时在gridview中收到旧数据?

时间:2011-03-19 13:35:31

标签: c# asp.net gridview webforms

我正在做的过程是lbl.Text是“已验证”,然后在网格中相应地禁用复选框。如果没有分页,代码工作正常。 现在问题是我正在使用分页,当我点击网格的下一页时 验证的内容会在启用复选框的情况下显示。

我检查了断点。它在页面加载事件期间加载先前的网格页值。在页面转换后,它的设计和加载网格中的新值。

//-------loading previous page values of grid here---------

protected void Page_Load(object sender, EventArgs e)
{
    foreach (GridViewRow row in GridView1.Rows)
    {
        Label lbl = (Label)row.FindControl("Labely8");
        Label Label23 = (Label)row.FindControl("Label23");
        CheckBox checkbox = (CheckBox)row.FindControl("chkRows");
        if (lbl.Text == "Validated")
        {
            checkbox.Enabled = false;
        }
        else
        {
            checkbox.Enabled = true;
        }
    }
}

1 个答案:

答案 0 :(得分:2)

我认为您需要在GridView.RowDataBound事件中单独启用或禁用每个复选框,而不是在Page_Load事件中同时启用或禁用所有复选框:

void GridView1_RowDataBound(Object sender, GridViewRowEventArgs e)
{    
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
        CheckBox checkbox = (CheckBox)e.Row.FindControl("chkRows");
        checkbox.Enabled = e.Row.Cells["nameOfCellWithLabel"].Text == "Validated";
    }
}