2

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

在我的特殊情况下,每次回发后都会重新填充控件。

谢谢!

4

5 回答 5

4

我想到了。TreeView 控件在客户端上创建一个 javascript 对象。它被命名为附加了“_Data”的树视图。该对象使您可以获取对选定节点的引用。

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

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

if(selectedNode)
{ 
selectedNode.scrollIntoView(true);
}
于 2009-02-23T12:42:56.920 回答
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>

于 2012-12-05T07:26:57.493 回答
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);
        }

归功于保罗·金梅尔

于 2012-05-29T19:25:42.043 回答
0

您还可以使用以下代码:

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

归功于保罗·金梅尔

于 2009-04-22T08:49:01.160 回答
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);
    }
于 2016-03-02T02:56:43.120 回答