문제

트리를 표시해야 하는 상황에 있습니다.그러나 일부 노드에는 35000개의 하위 노드가 있습니다(직계 하위!).물론 이것은 유용성 측면에서 속도가 느려지는 방법입니다.

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

이러한 트리는 WinForms 및 C++에 존재합니다. 이러한 트리가 ASP.NET에 존재하는지 아시는 분 계십니까?

우리는 현재 텔레릭 트리뷰, 이는 멋진 컨트롤이지만 설명된 상황을 지원하지 않습니다.

추가 질문

유용성 관점에서 보면:그런 나무들은 어떻게 처리하시나요?한 수준에 35000개의 노드를 표시하는 것은 좋지만 해당 트리에서 항목을 어떻게 찾을 수 있습니까?트리에서 페이징을 사용합니까?아니면 검색창?아니면 레벨을 추가할 수도 있나요?

도움이 되었습니까?

해결책

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

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

필터링을 제공 할 수있는 능력 (즉, 필터링 할 수있는 필드)을 확실히 잘 모르겠지만, 이것이 최선의 방법이라고 생각합니다. UI 옵션은 다음과 같습니다.

  1. ASP.NET AJAX 용 RADGRID와 같은 내장 필터링 UI를 제공하여 사용자가 관심있는 값을 신속하게 찾을 수 있습니다.
  2. Radtreeview의 클라이언트 측 API 및 주문형 노드로드를 지원하면 트리의 노드를 사용자 유형으로 필터링하는 텍스트 상자를 만들 수 있습니다. TextBox의 OnKeyUp 이벤트를 처리 한 다음 웹 서비스에 요청을 시작하여 필터 기준을 충족하는 노드를 잡고 TreeView의 노드 컬렉션을 결과로 바꾸십시오. 그것은 그것을 만들 것입니다 많이 사용자가 대상 노드를 찾을 수 있습니다.

분명히 다른 접근법도 있지만, 이것은 당신에게 몇 가지 아이디어를 제공합니다.

짧은 대답: 대규모 데이터 세트의 경우 실시간 필터링과 웹 서비스의 조합을 사용하여 사용자에게보다 관리하기 쉬운 결과 세트를 제공합니다. 초기로드의 경우, 성능을 높이기 위해 첫 번째 (예 : lever) 200 개의 노드 만로드했습니다.

도움이 되었기를 바랍니다! -todd

다른 팁

jQuery 기반 트리 컨트롤이 있다는 것을 알고 있습니다.이름을 모릅니다.ASP.NET 트리 컨트롤은 AJAX화할 수 없으므로 이를 지원하지 않습니다.35000개의 노드를 표시하는 문제의 경우 다음과 같이 페이지를 표시합니다.

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

더보기 위로 마우스를 가져가거나 클릭하면 더 많은 노드가 표시됩니다.100개의 하위 노드를 표시하는 경우 200개를 로드하고 나머지 100개는 숨깁니다.이렇게 하면 더 많은 항목 위로 마우스를 가져가면 순간적으로 나타납니다.그리고 더 많은 항목 위로 마우스를 가져갈 때마다...다음 숨겨진 100개가 로드됩니다.

또한 요즘에는 모든 상위 레벨 브라우저를 사용하여 사용자 정의 트리 컨트롤을 만드는 것이 그리 어렵지 않습니다. <ul> 그리고 <li> 노드와 하위 노드를 생성한 다음 적절한 스타일을 적용하기 위해 중첩됩니다.그만큼 <li> 전체 클릭을 더 쉽게 만들고 싶다면 링크를 포함할 수 있습니다.

내 2센트.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top