Как лениво загрузить Infragistics UltraWebTree control? - PullRequest
0 голосов
/ 26 июля 2010

Не могу найти примеров того, как лениво загрузить Infragistics UltraWebTree v6.3

Я обнаружил, что документы на сайте Infragistics, как правило, ограничены последней версией их элементов управления, но это устаревшее приложение, которое я не могу обновить. Кто-нибудь получил пример кода или ссылки, которые демонстрируют, как лениво загружать узлы в этом элементе управления?

Текущая реализация, которая у нас есть, загружает 1,35 МБ HTML, потому что она заполняет все дерево !! Хлоп!

1 Ответ

0 голосов
/ 10 августа 2010

Оказалось, что это простой кусок 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>
...