4

Telerik バージョンを使用しています: 2009.3.1208.0

私の仕事は、ノード (ノードの右側) に矢印を追加して、ユーザーがノードを左クリックしてコンテキスト メニューにアクセスできるようにすることです。

ここに画像の説明を入力

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

例外はすべて問題ないようです

ノードの 1 つを展開すると、展開されているノードに対して 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 に答える