ポストバック後に ASP.Net TreeView の選択したノードをスクロールして表示する方法はありますか?
私の特定のシナリオでは、ポストバックごとにコントロールが再設定されます。
ありがとう!
私はそれを考え出した。TreeViewコントロールは、クライアント上にjavascriptオブジェクトを作成します。ツリービューと呼ばれる名前に「_Data」が追加された名前が付けられます。オブジェクトを使用すると、選択したノードへの参照を取得できます。
以下のコードは、ASP.NetAjax拡張機能を使用しています。TreeViewの名前を自分の名前に変更することを忘れないでください。
var name = myTreeView_Data.selectedNodeID.value;
var selectedNode = $get(name);
if(selectedNode)
{
selectedNode.scrollIntoView(true);
}
これは、特定のツリーノードをクリックしてページの関心のあるタイトルまでスクロールするだけのツリービューのソリューションです(リダイレクトではありません)。これには、単純な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>
私はポールのアプローチを使用しましたが、うまくいきました。私は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);
}
クレジットはポール・キンメルに行きます
次のコードを使用することもできます。
var elem = document.getElementById('TreeView1_SelectedNode');
if(elem != null )
{
var node = document.getElementById(elem.value);
if(node != null)
{
node.scrollIntoView(true);
}
}
クレジットはポール・キンメルに行きます