2011-12-22 23 views
0

我有一個樹形視圖。我想要提醒所選節點的名稱。 但我的代碼不斷給我與第一次選擇的節點相同的名稱,儘管有其他節點選擇。獲取selectednode值

例如,如果我在啓動應用程序時選擇了節點「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 2011-12-22 19:39:05