Mam problem, w wyniku którego stan widoku repeatera, tj. Elementy sterujące wewnątrz repeatera, nie zachowują stanu wyświetlania.Utrzymywanie stanu widoku repetera
mam następujące:
Repeater 1:
<asp:Repeater ID="rptImages" runat="server">
<ItemTemplate>
<asp:LinkButton Text="Add" CommandName="Add" CommandArgument=<%# Eval("ID") %> runat="server" />
</ItemTemplate>
</asp:Repeater>
Gdy przycisk kliknięciu łącza wartość CommandArgument są przechowywane w ukrytym polem na stronie.
Po odświeżeniu strony nie można uzyskać wartości ukrytego pola do momentu załadowania programu obsługi zdarzeń wstępnych. Więc w moim przypadku prerender łapię wartość pola ukrytego i przechowywać go w nieruchomości listy, tak jak poniżej:
if (!string.IsNullOrEmpty(this.SelectedImageIDsInput.Text)) {
this.ImageList.Add(this.SelectedImageIDsInput.Text);
}
a właściwość Lista wygląda tak:
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; }
}
Raz mam zapisane wartość do mojej własności listy wiążę moją drugą repeater (ponownie w razie prerender):
this.rptSelectedImages.DataSource = this.LightBoxControl.ImageList;
this.rptSelectedImages.DataBind();
drugi repeater ma dropdownlist i pole tekstowe w nim. Problem polega na tym, że stan wyświetlania tych kontrolek podrzędnych nie jest zachowywany. Zakładam, że tak jest, ponieważ przy każdym odświeżeniu zwrotnym ponownie wiążę repeater, dlatego jest on przebudowywany. Co nie wiem, jak mogę to obejść? Właściwość ImageList jest aktualizowana tylko w przypadku odświeżenia strony, więc oczywiście muszę ponownie powiązać repeatera z każdym powiadomieniem zwrotnym - jak inaczej można to zrobić?
Każda pomoc zostanie bardzo doceniona.
Dzięki Al
Hi CodeKing. Jednak są tam dwa problemy - nie mogę uzyskać wartości ukrytego pola już w momencie uruchomienia Init - a właściwość ImageList można aktualizować tylko po odesłaniu ..... – higgsy
W takim przypadku konieczne będzie ponowne powiązanie drugiego przemiennika przy każdym połączeniu używającym wartości w ukrytym polu. – TheCodeKing
Hi CodeKing - to dokładnie to, co robię, ale nie jest to? Czy nie rozumiem twojej odpowiedzi. Obecnie czekam, aż onprerender dostanie wartość ukrytego pola, a następnie ponownie zwiąże repeatera - problem z tym jest stanem wyświetlania kontrolek w repeaterie, nie utrzymuj się na postbacks .... – higgsy