2011-03-25 1 views
5

을 이것을 고려 -동적으로 컨트롤을 생성하고 다시 게시를 통해 컨트롤의 값을 저장 - ASP.Net C#을

나는 최종 사용자가 몇 가지 세부 사항을 얻는하여 ASP.Net 페이지에 동적으로 탭 컨트롤을 만들 수 있습니다. 각각의 모든 탭 추가를 위해 나는 몇 가지 설정을 가져 -

  1. 탭 제목
  2. 탭 내용
  3. 탭 바닥 글 링크

그래서 내가 탭 각각의 모든 이러한 세부 사항을 얻을. 사용자는 하나 이상의 탭에 '탭 추가'버튼이 제공됩니다. 그래서 탭 설정을 얻으려면 페이지에 탭 설정 패널을 하나 더 추가해야합니다. 하지만 이렇게하면 이전에 만든 동적 탭 설정 패널에 입력 된 값을 잃게됩니다. 사용자는 탭을 여러 개 추가하고 각 탭마다 설정을 입력 할 수 있습니다. 마지막으로 저장하면 탭 컨트롤 (설정 및 내용에 따라 다름)을 만들고 컨트롤을 렌더링합니다. 컨트롤이 동적이기 때문에

, 나는 두 가지 옵션 중 일 수 있어요 -

  1. 재 작성 이전에 생성 된 N - 1 탭 설정 패널을 n 번째 탭을 추가하는 동안. 따라서 각각의 모든 포스트 백에서 각 탭마다 설정 패널을 다시 만들어야합니다. 그러나이 경우 값을 유지하는 방법을 모르겠습니다.
  2. 클라이언트 측의 설정 패널을 간단한 html 컨트롤로 추가하고 UnLoad 페이지에서 컨트롤 -> 구문 분석 설정 -> 숨겨진 필드에 저장 -> 서버 측에서 가져 오기를 선택합니다. 이 경우 컨트롤 용 유효성 검사 스크립트를 작성해야하는 모든 서버 측 기능이 없어집니다.

더 나은 방법에 대한 통찰력이 있으십니까?

답변

0

이전에 옵션 # 1을 구현했습니다. 페이지 이벤트 라이프 사이클의 특정 지점에서 컨트롤 트리를 다시 만들어야 뷰 스테이트를 복원 할 뷰 이벤트가 필요할 때 모든 컨트롤이 필요합니다. 지금까지 내가 기억하는 한, 클라이언트에게 보내지기 전에 페이지가 렌더링되고보기가 지속될 때와 동일한 이름을 가진 모든 컨트롤을 정확히 동일한 계층 구조로 복원해야합니다. 불일치가 있으면 동적 컨트롤에 대해 viewstate를로드 할 수 없습니다.

1

한 가지 방법은 ViewState의 탭을 다시 만드는 데 필요한 데이터를 저장하는 것입니다. 예를 들어 PreRender 이벤트 중에이 작업을 수행 할 수 있습니다. 포스트 백에서는 계층 구조에서 원본 ID와 순서를 유지하면서 원래 있던 컨트롤을 다시 만들어야합니다. LoadViewState 단계에서이 작업을 수행 할 수 있습니다.

Page_Load에 일단 새 탭을 만들 수 있습니다.

관련 문제