我有一个页面,有5个用户控件相同的类型。每个用户控件都有一个gridview和一些按钮。为什么gridview控件(在用户控件中)在回发后不保留其属性值?
我不明白为什么用户控件上的控件不保留它们的值。
编辑
下面是我如何填充用户控件中的gridview。
protected void Page_Load(object sender, EventArgs e)
{
var list = new List<CKListByDprtment>
{
new CKListByDprtment { ID = 1, TaskName = "New laptop needed",
CompletedBy = "My Boss", HMReq = true },
new CKListByDprtment { ID = 2, TaskName = "New Workstation needed",
CompletedBy = "My Boss", HMReq = false }
};
gvCKList.DataSource = list;
gvCKList.DataBind();
}
#endregion
#region GridView Validation
protected void cvValidateGrid_ServerValidate(object sender, ServerValidateEventArgs args)
{
ValidateGrid();
}
private void ValidateGrid()
{
foreach (GridViewRow gvRow in gvCKList.Rows)
{
CheckBox ckHMreq = gvRow.Cells[0].FindControl("ckHMreq") as CheckBox;
}
}
我试着在main aspx页面上添加一个复选框。当页面回传时,检查可以保留其价值。我也尝试过用户控件,但不是在gridview中。回发时,复选框保留其值。
它看起来像只在GridView中,在回发后控件失去它们的值。我已经添加了ViewStateMode =“Enabled”首先在aspx页面上,然后在usercontrol和finview上查看gridview本身,但没有成功。
任何理由?
您是否在代码隐藏中动态添加用户控件,或者它们是否存在于aspx页面中? – 2013-02-08 19:40:54
它们出现在aspx页面 – Richard77 2013-02-08 19:43:38
您在页面生命周期的哪个位置填充用户控件?我想知道如果viewstate _is_恢复,但也许你正在重新填充数据,它会被覆盖。你有围绕usercontrol人口代码的if(!Page.IsPostBack)吗? – 2013-02-08 19:55:21