我正在做的过程是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;
}
}
}
答案 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";
}
}