غیرفعال کردن (Disable) نودهای درخت در پلاگین JsTree
دوستان برای نمایش اطلاعات به صورت سلسله مراتبی و درختی از پلاگین JsTree استفاده کردم. و اطلاعات رو به صورت زیر نمایش دادم :
<script>
$(function () {
$("#jstreeteacher").on("changed.jstree", function (e, data) {
}).jstree({
"core": {
"themes": {
"variant":"large"
},
"data": @Html.Raw(ViewBag.teacherJson) ,
},
"checkbox": {
"Keep_selected_style":false
},
"plugins": ["checkbox"],
checkbox: { three_state: false, cascade: "" }
}).on("loaded.jstree", function () {
$.jstree.reference('#jstreeteacher').open_all();
});
});
</script>
حالا میخوام بعضی از نودها رو غیرفعال کنم تا کاربر نتونه انتخاب کنه. لطفا راهنمایی کنید چه کدی برای این کار باید بنویسم.
پاسخ هوش مصنوعی
برای غیرفعال کردن نودهای درخت در پلاگین JsTree، می توانید از ویژگی `state` برای تنظیم `disabled` به نودهای خاص استفاده کنید. به عنوان مثال، شما می توانید در داخل داده های خود یک فیلد `state` با مقدار `disabled` برای نودهای مورد نظر اضافه کنید.
در زیر نمونه ای از نحوه اعمال این ویژگی به نودها آورده شده است:
{
"id": "node1",
"text": "نود 1",
"state": { "disabled": true }, // نود غیرفعال شده
"children": [
{
"id": "node2",
"text": "نود 2",
"state": { "disabled": false } // نود فعال
},
{
"id": "node3",
"text": "نود 3",
"state": { "disabled": true } // نود غیرفعال شده
}
]
}
شما باید اطمینان حاصل کنید که داده های JSON شما مطابق با این فرمت تنظیم شده اند تا نودهای غیرفعال به درستی کار کنند.
سپس با استفاده از روش jstree می توانید درخت را با این داده ها راه اندازی کنید:
<script>
$(function () {
$("#jstreeteacher").on("changed.jstree", function (e, data) {
}).jstree({
"core": {
"themes": {
"variant":"large"
},
"data": @Html.Raw(ViewBag.teacherJson) ,
},
"checkbox": {
"Keep_selected_style": false
},
"plugins": ["checkbox"],
checkbox: { three_state: false, cascade: "" }
}).on("loaded.jstree", function () {
$.jstree.reference('#jstreeteacher').open_all();
});
});
</script>
برای غیرفعال کردن نودهای درخت در پلاگین JsTree در ابتدا باید لیستی از نودهایی که میخواید فعال باشن رو ایجاد کنید. این لیست رو از بخش کنترلر توسط ViewBag به View ارسال کنید :
ViewBag.ypurlist = JsonConvert.SerializeObject(Query.Select(t => t.ID).ToList());
خب حالا این لیست رو باید توسط جی کوئری دریافت کنید :
var idlist = [];
idlist = '@ViewBag.yourlist';
حالا توسط متد disable_node میتونید لیستی از نودهای فعال رو مشخص کنید و بقیه غیر فعال:
<script>
$(function () {
$("#jstreeteacher").on("changed.jstree", function (e, data) {
}).jstree({
"core": {
"themes": {
"variant":"large"
},
"data": @Html.Raw(ViewBag.teacherJson) ,
},
"checkbox": {
"Keep_selected_style":false
},
"plugins": ["checkbox"],
checkbox: { three_state: false, cascade: "" }
}).on("loaded.jstree", function () {
$.jstree.reference('#jstreeteacher').open_all();
var idlist = [];
idlist = '@ViewBag.yourlist';
for (var i = 0; i < idlist.length; i++) {
$.jstree.reference('#jstreeteacher').disable_node(idlist[i]);
}
});
});
</script>
خروجی مشابه با تصویر زیر خواهد بود :

- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- حذف فایلها و دستورات Css و JavaScript اضافی
- دلیل خطای Identifier 'X' has already been declared در جی کویری چیست ؟
- نمایش پیغام گرافیکی با جی کویری
- تفاوت Class Component و Functional Component در React.js چیست ؟
- مقایسه مقدار اینپوت باکس با type آن در جی کویری
- دریافت کمترین و بیشترین مقدار با پلاگین ui-jquery
- وارد کردن فقط حروف انگلیسی در تکست باکس در html
- وارد کردن شکل صحیح ایمیل و شماره تماس با جی کویری
- ارسال اطلاعات با استفاده از ایجکس به همراه پارامتر
- مخفی کردن ستون در table در html