我使用的是 Telerik 版本:2009.3.1208.0
我的任务是向节点添加一个箭头(在节点的右侧),以便人们可以左键单击它并访问上下文菜单。
我能够通过创建一个节点模板(订阅一个接口(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)。有关更多说明,请参见下图。结果加载了错误的子节点。
问题:
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/