غیرفعال کردن (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>
خروجی مشابه با تصویر زیر خواهد بود :

- آموزش نصب و راه اندازی دیتابیس PostgreSQL در ویندوز
- PostgreSql چیست ؟ چه کاربردهایی دارد ؟
- دسترسی به پکیج های nuget در زمان قطع نت بین الملل
- نمایش آخرین ردیف دیتاگیرید موقع لود در wpf
- مشکل اینترنت جهانی و عدم دسترسی به cdnjs.cloudflare.com
- مشکل در نصب sql server 2022
- جلوگیری از اد شدن خودکار در گروه و کانال تلگرام
- کم کردن حجم فیلم توسط کد در Asp net core
- چه کسانی استوری تلگرام را می بینند ؟
- برای کسب و کار تلگرام پرمیوم بهتره یا واتس اپ بیزینس ؟
- حذف فایلها و دستورات Css و JavaScript اضافی
- دلیل خطای Identifier 'X' has already been declared در جی کویری چیست ؟
- نمایش پیغام گرافیکی با جی کویری
- تفاوت Class Component و Functional Component در React.js چیست ؟
- مقایسه مقدار اینپوت باکس با type آن در جی کویری
- دریافت کمترین و بیشترین مقدار با پلاگین ui-jquery
- وارد کردن فقط حروف انگلیسی در تکست باکس در html
- وارد کردن شکل صحیح ایمیل و شماره تماس با جی کویری
- ارسال اطلاعات با استفاده از ایجکس به همراه پارامتر
- مخفی کردن ستون در table در html