2010-02-09 3 views
1

현재 작업은 데이터 개체의 내용을 표시하는 ASP.NET 페이지입니다. 해당 객체의 속성 중 하나는 명명 된 목록의 목록입니다. 불투명도에 대해서는 Company으로 이름을 붙인 위치 목록이 있고 각 위치는 직원 목록과 만 연관되어 있습니다.데이터 바인딩 및 동적 TabPanel 만들기

IDictionary<string, IList<Employee>> mEmployeesByLocation; 

해당 목록의 각은 매우 쉽게 GridView.에서 내가 원하는 생각 무엇을 표시하려면 TabContainer에 모든 것을 넣어하는 것입니다 수 있습니다 : 그것은 중요한 경우

, Company 지금과 같이 구현이 속성을 가지고 각 그리드가 포함 된 별도의 TabPanel이 있어야합니다. 탭과 격자는 서로 동일하며 각 탭의 이름은 연관된 사전 키입니다.

이렇게하는 좋은 방법이 있습니까?

내 생각은 Repeater을 사용하는 것이지만 TabContainer 안에는 넣을 수 없습니다. 파서는 거기서 무엇을해야할지 모른다.

프로그래밍 방식으로 탭을 만들어야하는 것처럼 보입니다. 공정하다. 모든 가능한 경우 개별 그리드 컨트롤을 만들고 프로그래밍 방식으로 모든 속성을 할당하지 않아도됩니다.

내가 제안한 한 가지 제안은 TabPanel을 서브 클래스 화하고 사용자 컨트롤처럼 작동하게 만들고 GridView을 포함하고 데이터 바인딩을 통과시키는 방법을 아는 것입니다. 나는 그것에 대해 어떻게 생각하는지, 또는 그것이 효과가 있을지 모르겠다. 컨트롤을 서브 클래 싱하는 방법을 알고 있지만 뭔가가 모두 TabPanel처럼 작동하고 사용자 정의 컨트롤과 같은 컨트롤을 포함 할 수 있다고 생각하지 않습니다.

생각하십니까? 입력? 더 나은 아이디어?

답변

0

TabContainer의 버그로 인해이 모든 아이디어가 삭제되었습니다. 사용하고있는 툴킷 버전에서 컨트롤은 포스트 백을 통해 동적으로 생성 된 탭을 제대로 처리 할 수 ​​없습니다.

문제는 LoadControlStateActiveTabIndex 속성에있는 것으로 보입니다. 상태가로드되면 (자), 컨테이너는 탭 인덱스를 이전과 같게 설정하려고합니다. 동적 탭은 LoadControlState의 시간에 아직 생성되지 않았기 때문에로드 된 인덱스는 유효하지 않을 수 있습니다. 이 경우 속성은 ArgumentOutOfRangeException을 던지고 포함 페이지가 폭발합니다.

(부분적으로 해결책을 찾았지 만 LoadControlState이 전혀 작동하지 못하게하고 너무 흉칙 해져서 귀찮습니다.) 때문에 나는 업그레이드하거나 AjaxControlToolkit의 내 버전을 수정할 수 있지만이 오류가 다른 사람을 위해, 그것은 분명히 지난해 6 월 기준으로 고정하지 않아야 복잡한 사무실 정책 이유로

:
http://www.codeplex.com/AjaxControlToolkit/WorkItem/View.aspx?WorkItemId=15658

0

이 컨트롤에 대한 지원이 내장되어 있지 않습니다. 그것은 제 3 자 컨트롤에 있지만 AJAX 컨트롤 툴킷에는 없습니다. 프로그래밍 방식으로 탭을로드해야하고 그리드가 거의 동일한 경우 그리드가있는 사용자 정의 컨트롤을 사용하십시오 (http://aspalliance.com/565_Dynamic_Loading_of_ASPNET_User_Controls과 같은 LoadControl 메서드를 통해 사용자 정의 컨트롤을로드 할 수 있음).

그런 식으로 프로그래밍 방식으로 UI를 만들 수 있습니다. 모든 페이지로드시 UI를 다시 작성해야 할 필요가 있음을 알아야합니다 (자세한 내용은 여기 : http://www.asp.net/(S(wnmvzu45umnszm455c1qs522))/learn/ajax-videos/video-286.aspx). 동적 컨트롤은 페이지 포스트 백간에 유지되지 않습니다. 나는 탭이 유지되는지 안다.

HTH.