4

我正在使用 Telerik 版本:2009.3.1208.0

我的任务是向节点添加一个箭头(在节点的右侧),以便人们可以左键单击它并访问上下文菜单。

在此处输入图像描述

我能够通过创建节点模板(订阅接口)然后将我的类分配给 NodeTemplate 属性(在 Page Init 上)来做到这一点

这是代码:

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

一切似乎都很好,除了

展开其中一个节点时,NodeExpand 事件为正在展开的节点发送错误的值。例如,如果我展开节点 3,它会为节点 1 提供值 (e.Node.Value)。有关更多说明,请参见下图。结果加载了错误的子节点。 在此处输入图像描述

问题:

1) 为什么在添加 NodeTemplate 时 NodeExpand 会损坏?

2)有什么方法可以在节点上添加一个箭头,这样人们就可以在不覆盖NodeTemplate的情况下左键单击它?

4

1 回答 1

0

我认为您需要使用 Node 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
}

需要工作。此外,您可以手动使用冷扩展节点。Telerik 文档说当节点扩展时会发生此事件,因此这意味着当节点扩展时会发生什么,我认为您需要扩展节点。

于 2012-07-20T12:46:38.397 回答