загружаю динамически usercontrol, на котором находится wizard с панелями
на второй панели находится listbox и кнопка
порядок такой
1. на странице:
в Page.OnInit загружаю Control
2. в usercontrol-e
в Page_Load — загружаю данные
if (!Page.IsPostBack)
{
listbox.DataSource = ...;
listbox.DataBind();
}
в OnBubbleEvent Wizarda ловлю нажатие кновки и
вызываю валидацию и если она прошла то делаю
смену текущей страницы визада то есть делаю панель видимой.
вот в принципе и все
ПРОБЛЕМА в том что все айтемы listbox-a пропадают на второй странице.
Причем пропадают только в том случае если они добавлены ручками, если же я их объявляю
в ascx файле, то все замечательно работает.
такое ощущения что пропадает или не работает ViewState, но он включен.
Здравствуйте, aero_777, Вы писали:
_>hi all
_>загружаю динамически usercontrol, на котором находится wizard с панелями _>на второй панели находится listbox и кнопка
_>порядок такой
_>1. на странице: _>в Page.OnInit загружаю Control
_>2. в usercontrol-e _>в Page_Load — загружаю данные _>if (!Page.IsPostBack) _>{ _> listbox.DataSource = ...; _> listbox.DataBind(); _>}
_>в OnBubbleEvent Wizarda ловлю нажатие кновки и _>вызываю валидацию и если она прошла то делаю _>смену текущей страницы визада то есть делаю панель видимой.
_>вот в принципе и все
_>ПРОБЛЕМА в том что все айтемы listbox-a пропадают на второй странице. _>Причем пропадают только в том случае если они добавлены ручками, если же я их объявляю _>в ascx файле, то все замечательно работает.
_>такое ощущения что пропадает или не работает ViewState, но он включен.
насколько я знаю, Control нужно загружать только в Page_Load
Здравствуйте, aero_777, Вы писали:
_>ПРОБЛЕМА в том что все айтемы listbox-a пропадают на второй странице. _>Причем пропадают только в том случае если они добавлены ручками, если же я их объявляю _>в ascx файле, то все замечательно работает.
_>такое ощущения что пропадает или не работает ViewState, но он включен.
Ты ручками где добавляешь? на сервере или на клиенте?
Если на сервере, то до сохранения ViewState или после?
Если на клиенте — сохраняй инфу о листбоксе в отдельном hidden поле
Здравствуйте, uzzy, Вы писали:
U>Здравствуйте, aero_777, Вы писали:
_>>ПРОБЛЕМА в том что все айтемы listbox-a пропадают на второй странице. _>>Причем пропадают только в том случае если они добавлены ручками, если же я их объявляю _>>в ascx файле, то все замечательно работает.
_>>такое ощущения что пропадает или не работает ViewState, но он включен.
U>Ты ручками где добавляешь? на сервере или на клиенте? U>Если на сервере, то до сохранения ViewState или после? U>Если на клиенте — сохраняй инфу о листбоксе в отдельном hidden поле
ручками на сервере, до сохранения ViewState, в Page_Load user control-а
Re: TemplatedControl и ViewState was: проблема с listbox dat
Здравствуйте, aero_777, Вы писали:
_>ПРОБЛЕМА в том что все айтемы listbox-a пропадают на второй странице. _>Причем пропадают только в том случае если они добавлены ручками, если же я их объявляю _>в ascx файле, то все замечательно работает.
_>такое ощущения что пропадает или не работает ViewState, но он включен.
сорри за первое название темы
залез поглубже так вот если листбокс разместить не в визарде, а на самом usercontrol-то все работает
скорее всего проблема в самописном визарде
это наследник WebCOntrol, который может иметь страницы наследники Placeholder-a
по памяти код такой
[ParseChildren(true,"Pages")]
public class Wizard: WebControl, INamingContainer
{
private ArrayList pageData = new ArrayList()
public IList Pages {
get { return pageData; }
}
public void override CreateChildControls {
foreach (WizardPage ctl in pageData) {
Controls.Add(ctl)
}
}
protected override void OnBubbleEvent{
прячем/показываем нужные страницы
}
}
public class WizardPage: Placeholder
{
}
.ascx
<my:wizard runat="server">
<my:wizardpage runat="server">
... some content
<asp:button commandname="next"/>
</my:wizardpage>
<my:wizardpage runat="server">
<asp:listbox runat="server" id="someid"/>
... some content
<asp:button commandname="next"/>
</my:wizardpage>
<my:wizardpage runat="server">
... some content
</my:wizardpage>
<my:wizardpage runat="server">
... some content
</my:wizardpage>
</my:wizard>
симптомы следующие — на второй странице из list-box исчезают данные
подскажите, плиз, что я мог пропустить при написании контрола так что теряется/не отрабатывает viewstate
статьи в MSDN Creatiпg Custom/Templated Controls читал.
Здравствуйте, aero_777, Вы писали:
_>hi all
_>ПРОБЛЕМА в том что все айтемы listbox-a пропадают на второй странице. _>Причем пропадают только в том случае если они добавлены ручками, если же я их объявляю _>в ascx файле, то все замечательно работает.
_>такое ощущения что пропадает или не работает ViewState, но он включен.
раскопал причину, вдруг кому поможет
CreateChildCOntrols моего визарда вызывалась где-то в районе PreRender,
соответственно никакой загрузки ViewState не было
поправил перекрыв OnInit контрола и поставив там EnsureChildControls
не уверен что это верно, но работает