2010-07-26 4 views
0

나는 게으른 부하에 Infragistics의 UltraWebTree v6.3과는 Infragistics UltraWebTree 컨트롤을 게으른로드하는 방법은 무엇입니까?

내가 Infragistics의 사이트에있는 문서가 컨트롤의 최신 버전으로 제한되는 경향이 있음을 발견하는 방법의 예를 찾을 수 없습니다, 그러나 이것은 레거시 응용 프로그램 인 업그레이드 할 수 없습니다. 누구든지이 컨트롤에서 노드를 게으른로드하는 방법을 보여주는 예제 코드 또는 링크가 있습니까?

우리가 현재 가지고있는 구현은 전체 트리를 채우고 있기 때문에 1.35MB의 HTML을로드합니다 !! Yikes!

답변

0

단순한 JQuery와 렌더링 된 노드를 반환하는 웹 서비스로 판명되었습니다.

하위 항목이있는 노드는 스크립트가 검색하려고하는 것을 알 수 있도록 "로드 중 ..."이라는 텍스트로 초기화됩니다.

<script type="text/javascript" language="javascript"> 
    var imageTypeExpression = "img[imgType='exp'][src$='plus.gif']"; 
    var maxRetries = 5; 
    jQuery(document).ready(function() { 
     jQuery("#T_TreeListCtl " + imageTypeExpression).click(imageClick); 
     jQuery("#tdLists").show(); 
    }); 

    function imageClick() { 
     var parentDivId = jQuery(this).parent().attr('id'); 
     var nodesDiv = '#M_' + parentDivId; 
     if (jQuery(nodesDiv).text() == 'Loading...') { 
      getNodes(parentDivId, nodesDiv, maxRetries); 
     } 
    } 

    function getNodes(parentDivId, nodesDiv, retryCount){ 
     if (retryCount == 0) { 
      jQuery(nodesDiv).html("<div>Loading... failed.</div>"); 
     } 
     else { 
      jQuery.ajax({ type: "POST", 
       url: "WebServices/TreeNodes.asmx/GetChildNodes", 
       data: "{'parentId' :'" + parentDivId + "'}", 
       dataType: "json", 
       contentType: 'application/json; charset=utf-8', 
       success: function(json) { 
        var result = eval("(" + json.d + ")"); 
        jQuery(nodesDiv).html(result.value); 
        jQuery(imageTypeExpression, nodesDiv).click(imageClick); 
       }, 
       timeout: 100, 
       error: function(XMLHttpRequest, textStatus, errorThrown) { 
        if (textStatus == 'timeout') { 
         getNodes(parentDivId, nodesDiv, retryCount - 1); //keep trying 
        } 
       } 
      }); 
     } 
    } 
</script>