2010-07-26 40 views
0

我無法找到如何延遲加載的Infragistics UltraWebTree V6.3如何延遲加載Infragistics UltraWebTree控件?

我發現,在網站的Infragistics的文檔往往侷限於自己控制的最新版的例子,但是這是一箇舊的應用程序,它我無法升級。有沒有人獲得示例代碼或鏈接,演示如何在此控件中延遲加載節點?

當前的實現,我們加載了1.35MB的HTML,因爲它是填充整個樹!哎呀!

回答

0

它是一個簡單的JQuery和web服務來返回渲染的節點。

任何具有子項目的節點都將初始化爲文本「Loading ...」,以便腳本知道嘗試檢索它們。

<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>