gpt4 book ai didi

c# - Telerik TreeView |使用 NodeTemplate 时,NodeExpand 事件提供了错误的节点值

转载 作者:行者123 更新时间:2023-11-30 13:03:51 24 4
gpt4 key购买 nike

我使用的是 Telerik 版本:2009.3.1208.0

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

enter image description here

我能够通过创建一个节点模板(订阅一个接口(interface))然后将我的类分配给 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

一切似乎都很好除了:

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

问题:

1) 为什么在添加 NodeTemplate 时 NodeExpand 被破坏?

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

最佳答案

我认为你需要使用 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 Documentation说这个事件在节点展开时发生,所以这意味着当节点展开时会发生什么,我认为你需要展开节点。

关于c# - Telerik TreeView |使用 NodeTemplate 时,NodeExpand 事件提供了错误的节点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11351702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com