ASP.Net TreeView Прокрутка выбранного узла в представление - PullRequest
2 голосов
/ 23 февраля 2009

Есть ли способ прокрутить выбранный узел дерева ASP.Net в поле зрения после обратной передачи?

В моем частном сценарии элемент управления заполняется после каждой обратной передачи.

Спасибо!

Ответы [ 5 ]

4 голосов
/ 23 февраля 2009

Я понял это. Элемент управления TreeView создает на клиенте объект javascript. Он называется как бы вы ни называли древовидную структуру с добавлением _Data. Объект позволяет получить ссылку на выбранный узел.

В приведенном ниже коде используются расширения ASP.Net Ajax. Просто не забудьте изменить имя TreeView на то, что вы назвали своим.

var name = myTreeView_Data.selectedNodeID.value;
var selectedNode = $get(name);

if(selectedNode)
{ 
selectedNode.scrollIntoView(true);
}
2 голосов
/ 05 декабря 2012

Вот решение для древовидной структуры, когда клик на конкретном узле дерева просто прокручивается до заголовка проблемы (не перенаправляется), для этого у нас есть простой HTML-код, теперь мы видим, что это .. .

<html>

<body>

  <div id="sidebar">
        <ul>
           <li><a href="#contacts" >Contact</a></li>

                /***here is the link*****/`
        </ul>
   </div>

<div style="height: 250px;" id="contacts">

            /*here your content*/

       </div>

</body>

</html>

1 голос
/ 29 мая 2012

Я использовал подход Пола, и он сработал для меня. У меня есть TreeView в панели обновлений внутри пользовательского элемента управления, который перестраивается при каждом PreRender. Как только TreeView собирается, я запускаю следующее.

if (Page.IsPostBack)
        {
            string s2 = @"var elem = document.getElementById('{0}_SelectedNode');
                          if(elem != null )
                          {
                                var node = document.getElementById(elem.value);
                                if(node != null)
                                {
                                     node.scrollIntoView(true);
                                }
                          }
                        ";
            ScriptManager.RegisterStartupScript(this, this.GetType(), "myscript", s2.Replace("{0}", tvOrgChart.ClientID), true);
        }

Кредит идет на Пол Киммел

0 голосов
/ 02 марта 2016

Добавьте этот метод к вашему коду. Это сработало для меня. замените treeView на идентификатор вашего элемента управления treeView.

    protected override void OnPreRender(EventArgs e) {
        //return some code to run on the client
        string jsScript = @"
            <script language=javascript>
                function Tree_scrollIntoView() {
                    var data = " + treeView.ClientID + @"_Data;
                    if (!data) {
                        return;
                    }
                    if ((typeof(data.selectedClass) != ""undefined"") && (data.selectedClass != null)) {
                        var id = data.selectedNodeID.value;
                        if (id.length > 0) {
                            var selectedNode = document.getElementById(id);
                            if ((typeof(selectedNode) != ""undefined"") && (selectedNode != null)) {
                                selectedNode.scrollIntoView(true)
                            }
                        }
                    }
                }

                $(document).ready(function () {
                    Tree_scrollIntoView();
                });                    
            </script>";

        string jsScriptKey = "Scroll_treeview_to_selected";
        if (!Page.ClientScript.IsStartupScriptRegistered(this.GetType(), jsScriptKey)) {
            Page.ClientScript.RegisterClientScriptBlock(this.GetType(), jsScriptKey, jsScript);
        }

        base.OnPreRender(e);
    }
0 голосов
/ 22 апреля 2009

Вы также можете использовать следующий код:

        var elem = document.getElementById('TreeView1_SelectedNode');   
        if(elem != null )   
        {     
            var node = document.getElementById(elem.value);     
            if(node != null)     
            {       
                node.scrollIntoView(true);       
            }   
        } 

Кредит идет на Пол Киммел

...