WebControl을 확장하는 사용자 지정 컨트롤을 만들고 있습니다.웹 사용자 지정 컨트롤 데이터를 저장할 위치
<Custom:CustomGrid>
<Columns>
<Custom:DataColumn HeaderText="FirstName" />
<Custom:DataColumn HeaderText="LastName" />
</Columns>
을하고 데이터 소스 속성에 IEnumerable을 넣어이 테이블에 밖으로 렌더링 :이 웹 컨트롤은 소비자가 같은 마크 업의 열 수집, 뭔가를 정의 할 수 있습니다. 이 컨트롤은 또한 페이징을 허용합니다. DataSource의 IEnumerable은 전체 목록이며 한 번에 목록의 페이지를 표시합니다. viewstate에 이미 현재 페이지, 페이지 당 행 수 등을 저장하고 있습니다. viewstate에 전체 목록을 추가해야합니까? 어쩌면 세션? 이 목록은 약간 무거울 수 있습니다. 아마 viewstate에 저장된 무작위 키로 세션에 저장하겠습니까? 가장 좋은 방법은 무엇입니까?
편집 : IEnumerable의 모든 유형을 직렬화 할 수 있다고 생각하지 않습니다. 그게 공평하니? 그래서 직렬화를 위해 데이터 소스를 다른 데이터 구조로 복사해야합니까?
편집 2 : 내가 대신 난을 CreateChildControls를 구현해야합니다 RenderChildControls을 구현하는 기본 컨트롤을 사용하지,하지만 난 아직도 어딘가에 데이터를 유지해야합니다, 또는 내가 기본 클래스의 포인트를 놓치지 않았더라도?
그게 내가 결국하는 일입니다. 데이터 세트가 그리 크지 않기 때문에 필자는 각 포스트 백에서 DataSource 속성을 소비 페이지로 설정하는 책임을지고 ViewState에 이전에 DataSource를 가져 오는 데 필요한 항목 만 저장합니다. –