중계기의 viewstate, 즉 중계기 내의 컨트롤이 viewstate를 유지하지 못하는 문제가 있습니다.중계기의 viewstate 유지하기
리피터 1 :
나는 다음이
링크 버튼이 페이지에 숨겨진 필드에 저장되어있는 CommandArgument의 값을 클릭<asp:Repeater ID="rptImages" runat="server">
<ItemTemplate>
<asp:LinkButton Text="Add" CommandName="Add" CommandArgument=<%# Eval("ID") %> runat="server" />
</ItemTemplate>
</asp:Repeater>
.
프리젠 테이션 이벤트 처리기가로드 될 때까지 숨겨진 필드 값을 가져올 수 없습니다. 그래서 내 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; }
}
내가 저장 한 후 내 목록 속성에 값은 내가 (다시 PreRender 이벤트 내에서) 내 두 번째 리피터 바인딩 :
this.rptSelectedImages.DataSource = this.LightBoxControl.ImageList;
this.rptSelectedImages.DataBind();
두 번째 중계기는 DropDownList로하고 그 안에 텍스트 상자가 있습니다. 문제는 이러한 자식 컨트롤의 viewstate가 유지되지 않는다는 것입니다. 나는 각각의 포스트 백이있을 때 리피터를 리 바인드하므로 리빌드되어 있다고 추정합니다. 내가 모르는 것은 이걸 어떻게 얻을 수 있느냐는 것입니다. ImageList 속성은 포스트 백시에만 업데이트되므로 분명히 각 포스트 백과 함께 리피터를 다시 바인딩해야합니다.
도움을 주시면 감사하겠습니다.
덕분에 알
안녕 CodeKing : 당신은 당신이 좋아
LinkButton
에Click
이벤트를 처리 할 수 있습니다. 거기에 두 가지 문제가 - 초기화 이벤트 초기에 숨겨진 필드의 값을 얻을 수 없습니다 - 더하기 ImageList 속성을 경우에만 다시 게시 할 수 있습니다 ..... – higgsy그런 경우에는 두 번째 리피터 다시 바인딩해야 할 것입니다 숨겨진 필드의 값을 사용하여 모든 통화에 대해 – TheCodeKing
안녕하세요 CodeKing - 정확히 내가하고있는 일은 그게 아니야? 당신의 대답을 오해하고 있습니다. 나는 현재 숨겨진 필드의 값을 얻기 위해 onprerender를 기다렸다가 리피터를 다시 바인드한다 -이 문제는 리피터의 컨트롤의 viewstate가 포스트 백을 통해 지속되지 않는다 ... – higgsy