نصب و آموزش کامپوننت نمایش درختی Zeon Blazor TreeView

نحوه اضافه کردن کامپوننت (TreeView)

اضافه کردن فضای نام (در صفحه مورد نظر کد زیر را به Using ها اضافه کنید)
YourPage.razor

                    @using Zeon.Blazor.ZTreeView
                


اضافه کردن نمایش درختی (TreeView)

در صفحه و تگ مورد نظر خود جهت اضافه کردن نمایش درختی کد زیر را استفاده کنید
YourPage.razor
                    <ZTreeView TValue="ProductCategory" Name="tree-view-ProductCategory" DataSource="_productCategories" ></ZTreeView>
                


پارامتر ها (parameters)

نام پارامتر نوع پارامتر مقدار پیشفرض اجباری توضیحات
TValue Generic Type بله نوع مدل دیتا سورس Data Source Model Type
Name string TreeView1 بله نام کامپوننت که در هر صفحه باید یونیک باشد
DataSource IEnumerable<TValue> بله لیستی از نوع TValue جهت نمایش درخت
AutoCheckChildren bool true خیر چک کردن فرزندان به صورت خودکار
FieldsMapSettings FieldsMapSettings? null خیر تنظیم فیلد ها اجباری با نام های متفاوت از مقادیر پیشفرض کامپوننت جهت مپ کردن دیتا
ShowCheckedBox bool true خیر نمایش چک باکس ها جهت چک زدن آیتم ها
ShowActionButtons bool (add:false, edit:false,remove: false) خیر تنظیم نمایش دکمه های اضافه - ویرایش و حذف آیتم
AddItemEvent EventCallback<(int parentId, string value)> خیر رویداد اضافه کردن آیتم جدید
EditItemEvent EventCallback<(int id, string newValue)> خیر رویداد ویرایش متن نمایشی آیتم
RemoveItemEvent EventCallback<int> خیر رویداد حذف آیتم
DragAndDropIsEnabled bool false خیر تنظیم قابلیت کشیدن و رها کردن جهت تغییر پدر آیتم و مرتب سازی آیتم ها
OnReorderEvent EventCallback<ReorderTree> خیر رویداد تغییر مرتب سازی و پدر آیتم
BackgroundColor string whiteSmoke خیر رنگ پس زمینه

توابع / پراپرتی (functions And Property)

نام نوع توضیحات
GetCheckedItems int[] دریافت لیست شناسه آیتم های چک شده
GetExpandedItems int[] دریافت لیست شناسه آیتم های منبسط شده
SetCheckedItems void تنظیم آیتم هایی که باید به وضعیت چک تغییر کنند
SetExpandedItems void تنظیم آیتم هایی که باید به وضعیت منبسط تغییر کنند
GetData string دریافت json دیتا تنظیم شده به همراه تغییرات
SetFilter void ارسال فیلتر مورد نظر با نوع Func<TValue, bool>? جهت جستجو یا فیلتر درخت
ReloadDataSource void بارگذاری مجدد دیتا
SelectedId int پراپرتی دریافت یا تنظیم آیتم انتخاب شده

نمایشگاه و نمونه کد (Samples)

حالت نمایش ساده و تک انتخابی
Output Preview
  • دسته اصلی
    • نوشیدنی
    • لبنیات
    • بهداشتی

Code

                        <div class="row" style="font-size:small">

                        <div class="col-auto p-1">
                        <ZTreeView TValue="ProductCategory" Name="tree-view-ProductCategory1" DataSource="_productCategories" ShowCheckedBox="false"></ZTreeView>
                        </div>
                        <div class="col-auto p-1">
                        </div>
                        <div class="col-auto p-1">
                        </div>

                        </div>

                        @code {

                        List<ProductCategory> _productCategories = new();

                        protected override void OnInitialized()
                        {
                        var data = new List<ProductCategory>()
                        {
                        new ProductCategory() { Id = 1, Text = "دسته اصلی" , Expanded=true },
                        new ProductCategory() { Id = 2, ParentId = 1, Text = "نوشیدنی" },
                        new ProductCategory() { Id = 3, ParentId = 1, Text = "لبنیات" },
                        new ProductCategory() { Id = 4, ParentId = 1, Text = "بهداشتی" },
                        new ProductCategory() { Id = 5, ParentId = 2, Text = "نوشابه"  },
                        new ProductCategory() { Id = 6, ParentId = 2, Text = "آبمیوه" },
                        new ProductCategory() { Id = 7, ParentId = 2, Text = "دوغ" },
                        new ProductCategory() { Id = 8, ParentId = 5, Text = "کوکاکولا" },
                        new ProductCategory() { Id = 9, ParentId = 5, Text = "پپسی" },
                        new ProductCategory() { Id = 10, ParentId = 3, Text = "ماست" },
                        new ProductCategory() { Id = 11, ParentId = 3, Text = "شیر" },
                        new ProductCategory() { Id = 12, ParentId = 4, Text = "صابون" },
                        new ProductCategory() { Id = 13, ParentId = 4, Text = "مایع دستشویی" },
                        new ProductCategory() { Id = 14, ParentId = 4, Text = "مسواک" },
                        new ProductCategory() { Id = 15, ParentId = 4, Text = "خمیردندان", }
                        };

                        _productCategories.AddRange(data);

                        base.OnInitialized();

                        }


                        public class ProductCategory
                        {
                        public int Id { get; set; }
                        public int? ParentId { get; set; }
                        public string Text { get; set; } = string.Empty;
                        public bool IsChecked { get; set; }
                        public bool Expanded { get; set; }
                        }

                        }
                    
حالت نمایش با چک باکس و فیلتر
Output Preview
  • دسته اصلی
    • نوشیدنی
    • لبنیات
    • بهداشتی

Code

                        <div class="row" style="font-size:small">

                        <div class="col-auto p-1" style="background-color: whitesmoke;border-radius: 8px;padding: 10px;">
                        <Zeon.Blazor.ZInputContainer.ZInputContainer TModel="string" For="جستجو" CssIcon="fa fa-search" Display="block">
                        <Zeon.Blazor.ZInput.ZInput Type="string" OnValueChanged="FilterTreeData"></Zeon.Blazor.ZInput.ZInput>
                        </Zeon.Blazor.ZInputContainer.ZInputContainer>
                        <ZTreeView @ref="RefTreeView" TValue="ProductCategory" Name="tree-view-ProductCategory2" DataSource="_productCategories" BackgroundColor="#90ffc7"></ZTreeView>
                        </div>
                        <div class="col-auto p-1">
                        </div>
                        <div class="col-auto p-1">
                        </div>

                        </div>

                        @code {

                        List<ProductCategory> _productCategories = new();

                        public ZTreeView<ProductCategory> RefTreeView { get; set; } = null!;


                        protected override void OnInitialized()
                        {
                        var data = new List<ProductCategory>()
                        {
                        new ProductCategory() { Id = 1, Text = "دسته اصلی" , Expanded=true },
                        new ProductCategory() { Id = 2, ParentId = 1, Text = "نوشیدنی" },
                        new ProductCategory() { Id = 3, ParentId = 1, Text = "لبنیات" },
                        new ProductCategory() { Id = 4, ParentId = 1, Text = "بهداشتی" },
                        new ProductCategory() { Id = 5, ParentId = 2, Text = "نوشابه"  },
                        new ProductCategory() { Id = 6, ParentId = 2, Text = "آبمیوه" },
                        new ProductCategory() { Id = 7, ParentId = 2, Text = "دوغ" },
                        new ProductCategory() { Id = 8, ParentId = 5, Text = "کوکاکولا" },
                        new ProductCategory() { Id = 9, ParentId = 5, Text = "پپسی" },
                        new ProductCategory() { Id = 10, ParentId = 3, Text = "ماست" },
                        new ProductCategory() { Id = 11, ParentId = 3, Text = "شیر" },
                        new ProductCategory() { Id = 12, ParentId = 4, Text = "صابون" },
                        new ProductCategory() { Id = 13, ParentId = 4, Text = "مایع دستشویی" },
                        new ProductCategory() { Id = 14, ParentId = 4, Text = "مسواک" },
                        new ProductCategory() { Id = 15, ParentId = 4, Text = "خمیردندان", }
                        };

                        _productCategories.AddRange(data);

                        base.OnInitialized();

                        }

                        private void FilterTreeData(string value)
                        {
                        Func<ProductCategory, bool>? filter = null;

                        if (!string.IsNullOrEmpty(value))
                        {
                        filter = q => q.Text.Contains(value);
                        RefTreeView.SetFilter(filter);
                        }
                        else
                        {
                        RefTreeView.SetFilter(filter);
                        }
                        }

                        public class ProductCategory
                        {
                        public int Id { get; set; }
                        public int? ParentId { get; set; }
                        public string Text { get; set; } = string.Empty;
                        public bool IsChecked { get; set; }
                        public bool Expanded { get; set; }
                        }

                        }
                    
مپ کردن دیتا با فیلد های با نام های متفاوت
Output Preview
  • دسته اصلی
    • نوشیدنی
    • لبنیات
    • بهداشتی

Code

                        <div class="row" style="font-size:small">

                        <div class="col-auto p-1">
                        <ZTreeView @ref="RefTreeView2" TValue="ProductCategory2" Name="tree-view-ProductCategory3" DataSource="_productCategories2" FieldsMapSettings="_mapperSetting" ></ZTreeView>
                        </div>
                        <div class="col-auto p-1">
                        </div>
                        <div class="col-auto p-1">
                        </div>

                        </div>

                        @code {

                        List<ProductCategory2> _productCategories2 = new();

                        public ZTreeView<ProductCategory> RefTreeView2 { get; set; } = null!;

                        Zeon.Blazor.ZTreeView.FieldsMapSettings _mapperSetting = new FieldsMapSettings
                        {
                        Text = "Name",
                        ParentId = "PId"
                        };

                        protected override void OnInitialized()
                        {
                        var data2 = new List<ProductCategory2>()
                        {
                        new ProductCategory2() { Id = 1, Name = "دسته اصلی" , Expanded = true },
                        new ProductCategory2() { Id = 2, PId = 1, Name = "نوشیدنی" },
                        new ProductCategory2() { Id = 3, PId = 1, Name = "لبنیات" },
                        new ProductCategory2() { Id = 4, PId = 1, Name = "بهداشتی" },
                        new ProductCategory2() { Id = 5, PId = 2, Name = "نوشابه"  },
                        new ProductCategory2() { Id = 6, PId = 2, Name = "آبمیوه" },
                        new ProductCategory2() { Id = 7, PId = 2, Name = "دوغ" },
                        new ProductCategory2() { Id = 8, PId = 5, Name = "کوکاکولا" },
                        new ProductCategory2() { Id = 9, PId = 5, Name = "پپسی" },
                        new ProductCategory2() { Id = 10, PId = 3, Name = "ماست" },
                        new ProductCategory2() { Id = 11, PId = 3, Name = "شیر" },
                        new ProductCategory2() { Id = 12, PId = 4, Name = "صابون" },
                        new ProductCategory2() { Id = 13, PId = 4, Name = "مایع دستشویی" },
                        new ProductCategory2() { Id = 14, PId = 4, Name = "مسواک" },
                        new ProductCategory2() { Id = 15, PId = 4, Name = "خمیردندان", }
                        };

                        _productCategories2.AddRange(data2);

                        base.OnInitialized();

                        }

                        public class ProductCategory2
                        {
                        public int Id { get; set; }
                        public int? PId { get; set; }
                        public string Name { get; set; } = string.Empty;
                        public bool IsChecked { get; set; }
                        public bool Expanded { get; set; }
                        }

                        }
                    
فعال کردن drag and drop و نمایش دکمه های اضافه - ویرایش و حذف آیتم
Output Preview
  • دسته اصلی
    • نوشیدنی
    • لبنیات
    • بهداشتی

Code

                        <div class="row" style="font-size:small">
                        <div class="col-auto p-1">
                        <ZTreeView @ref="RefTreeView3" TValue="ProductCategory2" Name="tree-view-ProductCategory4" FieldsMapSettings="_mapperSetting" DataSource="_productCategories2" ShowActionButtons="(add:true,edit:true,remove:true)" DragAndDropIsEnabled="true" AddItemEvent="AddItemEvent" EditItemEvent="EditItemEvent" RemoveItemEvent="RemoveItemEvent" OnReorderEvent="ReorderTreeEvent"></ZTreeView>
                        </div>
                        <div class="col-auto p-1">
                        </div>
                        <div class="col-auto p-1">
                        </div>

                        </div>

                        @code {

                        List<ProductCategory2> _productCategories2 = new();

                        public ZTreeView<ProductCategory> RefTreeView3 { get; set; } = null!;

                        Zeon.Blazor.ZTreeView.FieldsMapSettings _mapperSetting = new FieldsMapSettings
                        {
                        Text = "Name",
                        ParentId = "PId"
                        };

                        protected override void OnInitialized()
                        {
                        var data2 = new List<ProductCategory2>()
                        {
                        new ProductCategory2() { Id = 1, Name = "دسته اصلی" , Expanded = true },
                        new ProductCategory2() { Id = 2, PId = 1, Name = "نوشیدنی" },
                        new ProductCategory2() { Id = 3, PId = 1, Name = "لبنیات" },
                        new ProductCategory2() { Id = 4, PId = 1, Name = "بهداشتی" },
                        new ProductCategory2() { Id = 5, PId = 2, Name = "نوشابه"  },
                        new ProductCategory2() { Id = 6, PId = 2, Name = "آبمیوه" },
                        new ProductCategory2() { Id = 7, PId = 2, Name = "دوغ" },
                        new ProductCategory2() { Id = 8, PId = 5, Name = "کوکاکولا" },
                        new ProductCategory2() { Id = 9, PId = 5, Name = "پپسی" },
                        new ProductCategory2() { Id = 10, PId = 3, Name = "ماست" },
                        new ProductCategory2() { Id = 11, PId = 3, Name = "شیر" },
                        new ProductCategory2() { Id = 12, PId = 4, Name = "صابون" },
                        new ProductCategory2() { Id = 13, PId = 4, Name = "مایع دستشویی" },
                        new ProductCategory2() { Id = 14, PId = 4, Name = "مسواک" },
                        new ProductCategory2() { Id = 15, PId = 4, Name = "خمیردندان", }
                        };

                        _productCategories2.AddRange(data2);

                        base.OnInitialized();

                        }


                        private void ReorderTreeEvent(ReorderTree reorderTree)
                        {

                        }

                        private void EditItemEvent((int id, string newValue) parameters)
                        {
                        _productCategories2.First(q => q.Id == parameters.id).Name = parameters.newValue;
                        RefTreeView3.ReloadDataSource();
                        }

                        private void AddItemEvent((int id, string value) parameters)
                        {
                        var item = new ProductCategory2()
                        {
                        Id = _productCategories2.Max(q => q.Id) + 1,
                        PId = parameters.id,
                        Name = parameters.value,
                        Expanded = false,
                        IsChecked = false,
                        };
                        _productCategories2.Add(item);
                        RefTreeView3.ReloadDataSource();
                        }

                        private void RemoveItemEvent(int id)
                        {
                        var item = _productCategories2.First(q => q.Id == id);
                        _productCategories2.Remove(item);
                        RefTreeView3.ReloadDataSource();
                        }


                        public class ProductCategory2
                        {
                        public int Id { get; set; }
                        public int? PId { get; set; }
                        public string Name { get; set; } = string.Empty;
                        public bool IsChecked { get; set; }
                        public bool Expanded { get; set; }
                        }

                        }
                    
An error has occurred. This application may no longer respond until reloaded. Reload 🗙