ASP.Net TreeView将选定节点滚动到视图中

时间:2009-02-23 11:23:27

标签: asp.net treeview scroll

有没有办法在回发后将ASP.Net TreeView的选定节点滚动到视图中?

在我的特定场景中,每次回发后都会重新填充控件。

谢谢!

5 个答案:

答案 0 :(得分:4)

我明白了。 TreeView控件在客户端上创建一个javascript对象。它被命名为你所谓的树视图,附加一个'_Data'。该对象允许您获得对所选节点的引用。

下面的代码使用ASP.Net Ajax扩展。只需记住将TreeView名称更改为您称之为的名称。

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

if(selectedNode)
{ 
selectedNode.scrollIntoView(true);
}

答案 1 :(得分:2)

这是树视图的解决方案,当点击特定树节点时它只是滚动到页面的关注标题(不是重定向),为此我们有简单的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>

答案 2 :(得分:1)

我使用了保罗的方法,它对我有用。我在用户控件内的更新面板中有一个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);
        }

信用转到Paul Kimmel

答案 3 :(得分:0)

您还可以使用以下代码:

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

信用转到Paul Kimmel

答案 4 :(得分:0)

将此方法添加到您的代码后面。它对我有用。将treeView替换为treeView控件的ID。

    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);
    }