Asp.netmvc3のcontextmenuでjsTreeを使用してツリービューを作成します。
<div id="divtree">
<ul id="tree">
<li><a href="#" class="usr">@Model.Name</a>
@Html.Partial("Childrens", Model)
</li>
</ul>
<script type="text/javascript">
$(function () {
$("#divtree").jstree(
{
"plugins": ["themes", "html_data", "ui", "crrm", "contextmenu"]
});
});
それはうまくいきます。
コンテキストメニューでカスタムアイテムを作成したい。たとえば、新しいメニュー項目を作成します。 新規コンテキストメニューで新しい従業員を作成します。従業員をDBに挿入します。このタスクにはjQuery POST関数を使用しますが、クリックイベントを処理する方法
コンテキストメニュー項目。
助けてください
コンテキストメニュープラグインをカスタマイズする方法は次のとおりです。
$("#divtree").jstree({
"plugins": ["themes", "html_data", "ui", "crrm", "contextmenu"],
"contextmenu": {
"items": function ($node) {
return {
"Create": {
"label": "Create a new employee",
"action": function (obj) {
this.create(obj);
}
},
"Rename": {
"label": "Rename an employee",
"action": function (obj) {
this.rename(obj);
}
},
"Delete": {
"label": "Delete an employee",
"action": function (obj) {
this.remove(obj);
}
}
};
}
}
});
了解しました。この例では、クリックハンドラー内の基本関数のみを呼び出しています。this.create(obj);
、this.rename(obj);
、およびthis.remove(obj);
ここで、obj
はクリックされたノード。
したがって、たとえば、新しいアイテムが追加されたときにAJAXリクエストをサーバーに送信する場合は、 create.jstree
のようにdemo page
イベントをサブスクライブできます。 jsTreeドキュメント:
<script type="text/javascript">
$("#divtree").jstree({
"plugins": ["themes", "html_data", "ui", "crrm", "contextmenu"],
"contextmenu": {
"items": function ($node) {
return {
"Create": {
"label": "Create a new employee",
"action": function (obj) {
this.create(obj);
}
},
"Rename": {
"label": "Rename an employee",
"action": function (obj) {
this.rename(obj);
}
},
"Delete": {
"label": "Delete an employee",
"action": function (obj) {
this.remove(obj);
}
}
};
}
}
})
.bind("create.jstree", function (e, data) {
$.ajax({
url: "@Url.Action("create", "employees")",
type: 'POST',
data: {
"name" : data.rslt.name
},
success: function (result) {
}
});
});
</script>
create.jstree
イベントコールバックに渡されるe
およびdata
引数を調べます。これらには、AJAXリクエストと一緒に送信するために使用できる、新しく作成されたノードに関する多くの有用な情報が含まれています。
この例に触発されて、ドキュメントに示されているように、remove.jstree
イベントとrename.jstree
イベントで拡張を続けることができます。したがって、それを見ると、必要なのはドキュメントを読むことだけでした。たとえば、私は人生でjsTreeを使用したことがありませんが、ドキュメントで例を見つけてすばやくスパイクするのに5分しかかかりませんでした。したがって、次に使用しているプラグインまたはフレームワークについてプログラミング関連の質問がある場合は、最初にドキュメントを読むことにもっと力を入れてください。