Asp.Net динамическое управление обратной передачей - PullRequest
0 голосов
/ 13 мая 2011

У меня есть страница 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;
}

1 Ответ

0 голосов
/ 13 мая 2011

EDIT

Это данные обратной передачи, устанавливающие элемент управления, в вашем LoadPageStateFromPersistenceMedium() см .:

var val = Request[Request["__EVENTTARGET"]];

К сожалению, объект Request доступен только для чтения

Я не знаю другого способа помешать ему установить значение на то, на что оно было изменено на стороне клиента, кроме как установить значение на то, что вы хотите, в LoadPageStateFromPersistenceMedium() после того, как postbackdata было установлен.

...