我有一個問題,即中繼器的視圖狀態,即中繼器內的控件不維護其視圖狀態。維護中繼器的視圖狀態
我有以下:
中繼器1:
<asp:Repeater ID="rptImages" runat="server">
<ItemTemplate>
<asp:LinkButton Text="Add" CommandName="Add" CommandArgument=<%# Eval("ID") %> runat="server" />
</ItemTemplate>
</asp:Repeater>
當鏈接按鈕被點擊被存儲在頁上的隱藏字段的CommandArgument的值。
回發後,我無法獲取隱藏字段的值,直到prerender事件處理程序已加載。所以在我的預渲染事件中,我抓住了隱藏字段的值,並將其存儲在一個列表屬性,像這樣:
if (!string.IsNullOrEmpty(this.SelectedImageIDsInput.Text)) {
this.ImageList.Add(this.SelectedImageIDsInput.Text);
}
而且列表屬性看起來像這樣:
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; }
}
一次,我已經存儲值進入我的列表屬性綁定我我的第二個中繼器(內再次預渲染事件):
this.rptSelectedImages.DataSource = this.LightBoxControl.ImageList;
this.rptSelectedImages.DataBind();
第二個中繼器有一個下拉列表,並在其中一個文本框。問題是這些子控件的視圖狀態不被保留。我認爲這是因爲在每次回傳時我都在重組中繼器,因此它被重建。我不知道的是我怎麼可能得到這個? ImageList屬性僅在回發時更新,所以我顯然必須在每次回發時重新綁定中繼器 - 還可以做什麼?
任何幫助將不勝感激。
感謝 鋁
嗨CodeKing。兩個問題雖然 - 我不能早在Init事件中獲得隱藏字段的值 - 加上ImageList屬性只能在回發時更新..... – higgsy
在這種情況下,您需要重新綁定第二個中繼器在使用隱藏字段中的值的每個呼叫上。 – TheCodeKing
嗨CodeKing - 多數民衆贊成我到底在做什麼,雖然不是嗎?我誤解你的迴應。我目前一直等到onprerender獲取隱藏字段的值,然後重新綁定中繼器 - 與此相關的問題是中繼器中的控件的視圖狀態不會持續回發。 – higgsy