У меня есть страница, которая имеет 5 пользовательских элементов управления того же типа. Каждый пользовательский элемент управления имеет сетку и пару кнопок.Почему элементы управления внутри gridview (который находится внутри пользовательского элемента управления) не сохраняют значения своих свойств после обратной передачи?
Я не понимаю, почему элементы управления на пользовательских элементах управления не сохраняют свое значение.
EDIT
Ниже, как я наполнении 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;
}
}
Я попытался добавить флажок на главной странице aspx. Когда страница была отправлена назад, проверяемый смог сохранить ее значение. Я также пытался использовать элемент управления пользователя, но не внутри gridview. При обратной передаче флажок сохранил свое значение.
Он выглядит только внутри сетки, где элементы управления теряют свои значения после обратной передачи. Я добавил ViewStateMode = «Включено» сначала на странице aspx, затем в usercontrol и finaly на самом экране gridview, но без успеха.
Любая причина?
Вы добавляете пользовательские элементы управления динамически в код-позади или присутствуют ли они на странице aspx? –
Они присутствуют на странице aspx – Richard77
Где на жизненном цикле страницы вы заполняете пользовательские элементы управления? Мне интересно, восстановлен ли viewstate _is_, но, возможно, вы повторно заполняете данные, и он перезаписывается. У вас есть 'if (! Page.IsPostBack)' вокруг кода пользователя usercontrol? –