У меня есть проблема, из-за которой состояние представления повторителя, т.е. элементы управления в повторителе, не поддерживают свое состояние представления.
У меня есть следующее:
Повторитель 1:
<asp:Repeater ID="rptImages" runat="server">
<ItemTemplate>
<asp:LinkButton Text="Add" CommandName="Add" CommandArgument=<%# Eval("ID") %> runat="server" />
</ItemTemplate>
</asp:Repeater>
При нажатии на кнопку ссылки значение CommandArgument сохраняется в скрытом поле на странице.
При обратной передаче я не могу получить значение скрытого поля, пока обработчик события prerender не имеетзагружен.Поэтому в моем событии prerender я беру значение скрытого поля и сохраняю его в свойстве List, например:
if (!string.IsNullOrEmpty(this.SelectedImageIDsInput.Text)) {
this.ImageList.Add(this.SelectedImageIDsInput.Text);
}
И свойство List выглядит так:
public List<string> ImageList {
get {
if (this.ViewState["ImageList"] == null) {
this.ViewState["ImageList"] = new List<string>();
}
return (List<string>)(this.ViewState["ImageList"]);
}
set { this.ViewState["ImageString"] = value; }
}
После сохранения значения в свойстве List я связываю свой второй повторитель (снова в событии prerender):
this.rptSelectedImages.DataSource = this.LightBoxControl.ImageList;
this.rptSelectedImages.DataBind();
Второй повторитель имеет раскрывающийся список и текстовое поле внутри него.Проблема в том, что состояние этих дочерних элементов управления не поддерживается.Я предполагаю, что это потому, что с каждой обратной передачей я привязываю ретранслятор, поэтому он перестраивается.То, что я не знаю, как я могу обойти это?Свойство ImageList обновляется только при обратной передаче, поэтому мне, очевидно, приходится перепривязывать ретранслятор при каждой обратной передаче - как еще это можно сделать?
Любая помощь будет принята с благодарностью.
Спасибо, Ал