ItemDataBound 이벤트에 컨트롤을 추가하는 listview가 있습니다. 다시 게시가 발생하면 새 컨트롤을 찾을 수 없습니다. 약간의 연구 끝에 ASP .NET은 포스트 백 후에도 항상 이러한 컨트롤이 필요하다는 것을 알게되었습니다. 거기에서 if (!Page.IsPostBack)
외부의 ListView를 바인딩하는 함수를 옮겼습니다. 이제 동적 컨트롤 값을 얻었지만 정적 컨트롤은 기본값으로 설정됩니다. 다음은 내가 성취하고자하는 것을 보여주는 샘플입니다.포스트 백 후에 동적 컨트롤의 값을 얻으려면 어떻게해야합니까?
간결함을 위해이 예제에서 몇 가지 명백한 것을 남겼습니다. 여기
<asp:ListView runat="server" ID="MyList" OnItemDataBound="MyList_ItemDataBound">
<LayoutTemplate>
<asp:PlaceHolder runat="server" ID="itemPlaceholder" />
</LayoutTemplate>
<ItemTemplate>
<asp:PlaceHolder runat="server" ID="ProductPlaceHolder">
<asp:TextBox runat="server" ID="StaticField" Text="DefaultText" />
<asp:PlaceHolder ID="DynamicItems" runat="server" />
</asp:PlaceHolder>
</ItemTemplate>
</asp:ListView>
및
는 코드 숨김입니다 :protected void MyList_ItemDataBound(object sender, System.Web.UI.WebControls.ListViewItemEventArgs e) {
PlaceHolder DynamicItems = (PlaceHolder)e.Item.FindControl("DynamicItems");
DynamicItems.Controls.Add(textbox);
}
그래서, 내가 말했듯이, 만약 내가 유일한 데이터 바인딩 Page != PostBack
후 나는 다시 게시 내 동적 컨트롤을 찾을 수 없습니다 때. 페이지가로드 될 때마다 바인딩하면 정적 필드가 기본 텍스트로 설정됩니다.
찾기 제어 기능을 사용해 보셨습니까? – Luke101