まったく個人的なプログラムに関するメモです

[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 &gt; 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が決められるので、他にも方法がありそうですね。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

メンバーのみ編集できます