У меня есть страница asp, где элементы управления динамически добавляются из БД в Page_Init (). EnableViewState имеет значение false.
Один из динамических элементов управления - это CheckBox, и при проверке он вызывает обратную передачу.
Теперь в Page_Init я снова заполняю свою страницу (после изменения в соответствии с правилами), и свойство checkbox теперь имеет значение false.
Оно остается ложным до конца LoadPageStateFromPersistenceMedium () из того, что я вижу.
protected override object LoadPageStateFromPersistenceMedium()
{
Control cntrl = Page.FindControl("FINS10CopyAddress");
Boolean check = ((CheckBox)cntrl).Checked;
return null;
}
Затем внезапно снова включается в OnPreLoad ().
protected override void OnPreLoad(EventArgs e)
{
Control cntrl = Page.FindControl("FINS10CopyAddress");
Boolean check = ((CheckBox)cntrl).Checked;
}
Если я делаю то же самое со свойством visible другого элемента управления, оно работает.
Есть идеи, что может привести к переопределению этого или предлагаемых методов, чтобы не загружать предыдущее состояние?
Ответ ниже помог мне создать обходной путь:
dataValue cntrl = ((Helper)Session["helper"]).Event.Control(Request["__EVENTTARGET"]);
if (cntrl != null)
{
if (cntrl is webCheckBox)
((CheckBox)Page.FindControl(Request["__EVENTTARGET"])).Checked = (Boolean)cntrl.Value;
}