2012-07-05 58 views
4

我使用Telerik的版本時,提供了錯誤的節點值:2009.3.1208.0Telerik TreeView | NodeExpand事件使用NodeTemplate

我的任務是箭頭添加到節點(在節點的右側),以便人們可以左點擊它並訪問上下文菜單。

enter image description here

我能做到這一點,通過創建一個nodetemplate(訂閱接口),然後分配給我的同班同學NodeTemplate屬性(在頁面上初始化)

下面是代碼:

Imports System.Web.UI 
Imports System.Web.UI.WebControls 
Imports Telerik.Web.UI 

    Public Class MyNodeTemplate 
     Implements ITemplate 

     Public Sub InstantiateIn(ByVal container As Control) Implements ITemplate.InstantiateIn 
      Dim newLabel As New Label() 
      newLabel.CssClass = "nodeLabel" 
      newLabel.Text = DirectCast(container, RadTreeNode).Text 

      Dim arrowDiv As New System.Web.UI.HtmlControls.HtmlGenericControl("DIV") 
      arrowDiv.Attributes.Add("class", "nodeRightClickArrow") 
      arrowDiv.Attributes.Add("onclick", "LeftClickContextMenuClick(event, this);") 

      container.Controls.Add(newLabel) 
      container.Controls.Add(arrowDiv) 
     End Sub 

    End Class 

一切似乎罰款EXCEPT

瓦在展開其中一個節點時,NodeExpand事件爲正在展開的節點發送了錯誤的值。例如,如果我展開節點3,它會爲節點1提供值(e.Node.Value)。有關更多說明,請參閱下面的圖片。結果加載了錯誤的子節點。 enter image description here

問題:

1)爲什麼被添加NodeTemplate時NodeExpand被打破?

2)通過任何方式實現向節點添加箭頭,以便人們可以在不覆蓋NodeTemplate的情況下左鍵單擊該節點?

回答

0

我認爲你需要使用節點Click方法,在節點單擊您的代碼

protected void treeView_NodeClick(object sender, RadTreeNodeEventArgs e) 
{ 
    int id; 
    int.TryParse(e.Node.Value, out id); 
    e.Node.Expanded = true // Expand the node manually, or IsExpanded, not remember 
} 

需要努力。 Aditionaly,你冷手動擴展節點手動使用。 Telerik Documentation說這個事件發生在節點擴展時,所以它意味着當節點擴展時會發生什麼,我認爲你需要擴展節點。

+0

NodeClick用於點擊節點中的項目,而不是當有人單擊樹中的「+」時。 – LarryBud 2014-09-18 18:26:47