Re: TreeView PopulateOnDemand
От: mogadanez Чехия  
Дата: 28.02.07 16:26
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>типа как на рсдне появляется "Загрузка, подождите пожалуйста..."


посмотрел я на это дерево первый раз... мда... клиентский API там хиловат

решение в лоб...в конец страницы
пишем

<script>
    var base$TreeView_PopulateNodeDoCallBack = this.TreeView_PopulateNodeDoCallBack;
    var base$TreeView_ProcessNodeData = this.TreeView_ProcessNodeData;
    this.TreeView_ProcessNodeData = function ( result, context )
        {
        alert( "after load " );
        return base$TreeView_ProcessNodeData ( result, context );
        }
    this.TreeView_PopulateNodeDoCallBack = function (context,param)
        {                
        alert( "before load " );
        return base$TreeView_PopulateNodeDoCallBack(context,param)
        }
</script>


ну или через RegisterStartupScript

вместо алертов пишем код отображающий какой нибудь индикатор загрузки.
как я уже сказал клиентское API ущербное, ноду там добавить/удалить низя, поэтому в чистом виде как на рсдн не получится.


вот пример простенькой реализации.

 
 <script>    
    var base$TreeView_PopulateNodeDoCallBack = this.TreeView_PopulateNodeDoCallBack;
    var base$TreeView_ProcessNodeData = this.TreeView_ProcessNodeData;
    this.TreeView_ProcessNodeData = function ( result, context )
        {
        //alert( "after load " );
        hide_wait_for_node( context.node );
        return base$TreeView_ProcessNodeData ( result, context );
        }
    this.TreeView_PopulateNodeDoCallBack = function (context,param)
        {                
        //alert( "before load " );
        show_wait_for_node( context.node );
        return base$TreeView_PopulateNodeDoCallBack(context,param)
        }
        
    function hide_wait_for_node( node )    
        {
        if ( node.wait_img )
            {
            node.removeChild( node.wait_img );
            }
        }
        
    function show_wait_for_node( node )
        {
        var wait_img = document.createElement("IMG" );
        wait_img.src = "loading.gif";           
        wait_img.border = 0;
        node.wait_img = wait_img;
        node.appendChild( wait_img );
        
        } 
</script>



мой хостинг временно не работает
подниму — выложу демо.
а пока скриншот:

... << RSDN@Home 1.2.0 alpha rev. 662>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.