2011-12-22 36 views
0

私はツリービューを持っています。選択したノードの名前を警告します。 しかし、私のコードは、他のノードの選択にもかかわらず、最初に選択されたノードと同じ名前を与え続けます。選択したノード値を取得

たとえば、アプリケーションを起動したときにノード「A」を選択した場合、「A」が警告されます。 しかし、別のノード(別のノード)を選択すると、それでも "A"が表示されます。ここ

は、これまでのコードである:

function childnode(event) { 
    var treeViewData = window["<%=nav_tree_items.ClientID%>" + "_Data"]; 
    var selectedNode = document.getElementById(treeViewData.selectedNodeID.value); 

    alert(selectedNode.nodeName.toString());    

    return false; 
} 

ツリービューは、データベースから生成されます。

答えて

0

ここではコンテキストが非常に小さいので、ユーザーとのやりとりに基づいて選択したノードを取得すると仮定しています。

イベント委任を使用することをお勧めします。このコードは、ツリーDOMノードのイベントハンドラを設定します。イベントハンドラは、内部のテーブルセルで発生したクリックイベントを処理します。私はあなたがテーブルを使用していると仮定しています。私が間違っている場合、あなたのノードを定義する正しいタグ名に 'TD'文字列を変更してください。

イベントハンドラが実行されると、アクティブノードへの参照がツリーノードに保存されます。 クリックイベント中にアクティブノードで何かしたい場合は、ここにコードを配置します。 現在選択されているノードに別のスコープからアクセスしようとしている場合は、下でも書いたtree.getSelected()を使用してください。

tree.onclick = function (e) { 
    var target = e.target || window.event && window.event.srcElement; // Compatibility code 

    while (target.tagName !== 'TD') { // Assumes Table cells as the node you are interested in. Replace with other or check className or similar 
     target = target.parentNode; 
     if (target === this) { 
      return; // No relevant node was hit and event bubbled to tree container 
     } 
    } 

    this.selected = target; 

    alert(target); 
}; 

tree.getSelected = function() { 
    return this.selected; 
} 
+0

ありがとうございました! – Ish

関連する問題