[Default.aspx] <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>TreeViewのテストだよ〜ん</title> <script type="text/javascript" src="Default.js"></script> </head> <body onload="LoadEvent();"> <form id="form1" runat="server"> <div> <asp:Panel runat="server" Height="150px" Width="150px" ScrollBars="Vertical"> <asp:TreeView ID="TreeView1" runat="server" DataSourceID="XmlDataSource1" > <DataBindings> <asp:TreeNodeBinding DataMember="item" TextField="value" ValueField="value" /> <asp:TreeNodeBinding DataMember="item" TextField="value" ValueField="text" /> </DataBindings> </asp:TreeView> <asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/XMLFile.xml"></asp:XmlDataSource> </asp:Panel> </div> </form> </body> </html>
[Javascript] function LoadEvent() { if (form1.TreeView1_SelectedNode.value.length > 0) { var selectNode = document.getElementById(form1.TreeView1_SelectedNode.value); selectNode.scrollIntoView(); } }
多分、このソースを見ただけだとわからないでしょうけど、デバッグして表示したHTMLのソースを見てみると、Form1の中に
"<input type="hidden" name="TreeView1_SelectedNode" id="TreeView1_SelectedNode" value="" />"
っていう"HiddenFild"が自動で作られています。
idとnameには同じ値が入り、"TreeViewのID_SelectedNode"という形式になります。
このHiddenFildの値に選択ノードのクライアントIdが格納されますので、その値からHTMLElementを探してあげて、移動の処理をするだけです。
.net4ならサーバー側でクライアントIDが決められるので、他にも方法がありそうですね。
"<input type="hidden" name="TreeView1_SelectedNode" id="TreeView1_SelectedNode" value="" />"
っていう"HiddenFild"が自動で作られています。
idとnameには同じ値が入り、"TreeViewのID_SelectedNode"という形式になります。
このHiddenFildの値に選択ノードのクライアントIdが格納されますので、その値からHTMLElementを探してあげて、移動の処理をするだけです。
.net4ならサーバー側でクライアントIDが決められるので、他にも方法がありそうですね。
コメントをかく