2009-05-07 4 views
1

트리를 표시해야하는 상황에 있습니다. 그러나 노드 중 일부에는 35000 개의 하위 노드가 있습니다 (직접 하위 노드!). 이것은 물론 사용성면에서 느려지는 방법입니다.하나의 레벨에 많은 수의 노드를 요구시로드하는 트 리뷰

나는 나무가 브라우저 뷰포트에 표시되는 노드 만로드한다는 것을 알고 싶습니다.

이러한 트리는 WinForms 및 C++ 용으로 존재하지만 ASP.NET 용 트리가 있는지 알고 있습니다.

우리는 현재 멋진 컨트롤 인 Telerik Treeview을 사용하고 있지만 설명 된 상황을 지원하지 않습니다.

추가 질문보기의 유용성 관점에서

: 당신은 그런 나무를 처리 할 방법에 대해 설명합니다. 한 레벨에 35000 개의 노드를 표시하는 것은 좋지만 그 트리에서 어떻게 찾을 수 있습니까? 나무에서 페이징을 사용합니까? 또는 검색 창? 아니면 추가 수준을 추가할까요?

답변

2

많은 노드를 사용하면 표현 방법을 찾을 수는 있어도 사용자가 사용하기가 쉽지 않을 수 있습니다. 관심있는 노드를 찾기 위해 35,000 개의 노드를 스크롤하려고한다고 상상해보십시오! 페이징도 마찬가지입니다. 사용자가 실제로 목표를 찾기 위해 3500 페이지 (10 페이지 크기로 가정)를 페이지에 게시합니까? 아마도 그렇지 않을 것입니다. 그렇다면 아마 행복하지 않을 것입니다. :)

대신 이와 같은 대형 데이터 세트를 사용하면 어떤 유형의 "필터"UI를 제공하는 것이 가장 좋습니다. 사용자가 사용 가능한 데이터를보다 관리하기 쉬운 컬렉션으로 "형성"할 수있게 해주는 것.

필터링을 제공해야하는 기능 (즉, 필터링 할 수있는 입력란)이 무엇인지 확실하지 않지만 최선의 방법이라고 생각합니다. UI의 옵션은 다음과 같습니다. RadTreeView의 클라이언트를 사용하여

  1. 신속하게 관심있는 가치를 발견 할 수있게합니다 내장 된 필터링 UI를 제공 할 수 있습니다 ASP.NET AJAX에 대한 RadGrid 같은 뭔가
  2. - 사이드 API를 지원하고 필요에 따라 노드를로드 할 수 있도록 지원하기 때문에 사용자가 입력 할 때 트리의 노드를 필터링하는 텍스트 상자를 만들 수 있습니다. TextBox의 onkeyup 이벤트를 처리 한 다음 웹 서비스에 대한 요청을 실행하여 필터 조건을 충족하는 노드를 잡고 TreeView의 노드 컬렉션을 결과로 바꿉니다.그러면 사용자가 대상 노드를 더 쉽게 찾을 수 있습니다.

분명히 다른 접근 방식도 있지만 잘하면이 방법을 통해 아이디어를 얻을 수 있습니다.

짧은 답변 : 큰 데이터 세트의 경우 실시간 필터링과 웹 서비스를 결합하여 사용자에게보다 관리하기 쉬운 결과 세트를 제공 할 수 있습니다. 초기로드의 경우 성능을 높이기 위해 처음 200 노드 만로드합니다.

희망이 도움이됩니다. - 코드

1

몇 가지 jQuery 구동 트리 컨트롤이 있다는 것을 알고 있습니다. 이름을 알지 못한다. ASP.NET 트리 컨트롤은 AJAX 가능하지 않기 때문에이 기능을 확실히 지원하지 않습니다. 35000 노드 문제를 표시하기 위해 나는 이것들을 페이지 할 것입니다.

node 
| 
-- Sub Node 1 
| 
-- ... 
| 
-- Sub Node n 
| 
-- more... 

이상으로 마우스를 가져 가거나 클릭하면 더 많은 노드가 표시됩니다. 100 개의 하위 노드를 표시하고 있다면 200을로드하고 다른 100을 숨길 것입니다.이 방법을 사용하면 더 많이 마우스를 가져 가면 intantaneous로 보입니다. 그리고 당신이 더 많이 맴돌 때마다 다음 숨겨진 100이로드됩니다.

또한 모든 상위 브라우저에서 요즘 사용자 지정 트리 컨트롤을 만드는 것이 어렵지 않습니다. <ul><li>을 중첩하여 노드 및 하위 노드를 만든 다음 적절한 스타일을 적용하십시오. <li>에는 전체 클릭을 더 쉽게하려면 링크가있을 수 있습니다.

내 두 센트.