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

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

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

                    @using Zeon.Blazor.ZItemChooser
                    @using Zeon.Blazor.ZItemChooser.Constants
                


اضافه کردن انتخابگر آیتم (ItemChooser)

در صفحه و تگ مورد نظر خود جهت اضافه کردن انتخابگر آیتم کد زیر را استفاده کنید
YourPage.razor
                    <ZItemChooser KeyType="int" Name="item-chooser-people" ></ZItemChooser>
                


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

نام پارامتر نوع پارامتر مقدار پیشفرض اجباری توضیحات
KeyType Generic Type بله نوع کلید بازگشتی و ورودی مانند int , long , string و ...
Name string بله نام کامپوننت که در هر صفحه باید یونیک باشد
FetchData Func<string, Task<Dictionary<KeyType, string>>> بله یک تابع با ورودی string و خروجی دیکشنری با کلید KeyType و مقدار string
OnKeyChanged string بله رویداد تغییر و یا انتخاب آیتم
WaitingTimeTyping UInt16 600 خیر مقدار زمان انتظار برای اتمام تایپ و ارسال درخواست جستجو که در صورت قرار دادن به مقدار 0 جستجو بر اساس کلید Enter انجام می شود
BehaviorModeAfterItemSelection Enum Type Of BehaviorModeAfterItemSelection BehaviorModeAfterItemSelection.Normal خیر نحوه رفتار بعد از انتخاب آیتم در حالت نرمال آیتم انتخاب می شود و در حالت Eventable فقط شناسه آیتم انتخاب شده به رویداد ارسال می شود
NotFoundRecordText string رکوردی یافت نشد! خیر متن نمایشی در صورت پیدا نشدن رکورد

توابع (functions)

نام تابع نوع توضیحات
SetDisplayValue void تنظیم نام نمایشی برای آیتم پیشفرض

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

حالت نمایش ساده بدون کانتینر
برای تست میثم را جستجو کنید
Output Preview

Code

                        <div class="row" style="font-size:small">
                        <div class="col-auto p-1">
                        <ZItemChooser KeyType="int" Name="item-chooser-people" FetchData="GetPeople" OnKeyChanged="(key)=> {}"></ZItemChooser>
                        </div>
                        <div class="col-auto p-1">
                        </div>
                        <div class="col-auto p-1">
                        </div>

                        </div>

                        @code {

                        protected override void OnInitialized()
                        {
                        for (int i = 0; i < 2000; i++)
                        {
                        _peoples.Add(new People()
                        {
                        Id = i + 1,
                        Name = "میثم",
                        Family = "خادمی" + (i + 1),
                        IsActive = true
                        });
                        }
                        base.OnInitialized();
                        }

                        List<People> _peoples = new();

                        public class People
                        {
                        public People()
                        {
                        Birthday = new DateTime(1992, 07, 01);
                        }
                        public int Id { get; set; }
                        public string Name { get; set; }
                        public string Family { get; set; }
                        public bool IsActive { get; set; }
                        public DateTime Birthday { get; set; }
                        }

                        private async Task<Dictionary<int, string>> GetPeople(string value)
                        {
                        var result = _peoples.Where(q => string.Concat(q.Name, " ", q.Family).Contains(value)).Take(50)
                        .ToDictionary(k => k.Id, v => string.Concat(v.Name, " ", v.Family));

                        //just for show spiner in demo mode
                        await Task.Delay(2000);

                        return result;
                        }

                        }
                    
حالت نمایش با کانتینر
Output Preview

Code

                        <div class="row" style="font-size:small">
                        <div class="col-auto p-1">
                        <Zeon.Blazor.ZInputContainer.ZInputContainer TModel="string" For="خریدار" Display="flex" CssIcon="fa fa-user">
                        <ZItemChooser KeyType="int" Name="item-chooser-people1" FetchData="GetPeople" OnKeyChanged="(key)=> {}"></ZItemChooser>
                        </Zeon.Blazor.ZInputContainer.ZInputContainer>
                        </div>
                        <div class="col-auto p-1">
                        </div>
                        <div class="col-auto p-1">
                        </div>

                        </div>

                        @code {
                        public Zeon.Blazor.ZInput.ZInput<int> ZInputSeller2 { get; set; } = null!;

                        protected override void OnInitialized()
                        {
                        for (int i = 0; i < 2000; i++)
                        {
                        _peoples.Add(new People()
                        {
                        Id = i + 1,
                        Name = "میثم",
                        Family = "خادمی" + (i + 1),
                        IsActive = true
                        });
                        }
                        base.OnInitialized();
                        }

                        List<People> _peoples = new();

                        public class People
                        {
                        public People()
                        {
                        Birthday = new DateTime(1992, 07, 01);
                        }
                        public int Id { get; set; }
                        public string Name { get; set; }
                        public string Family { get; set; }
                        public bool IsActive { get; set; }
                        public DateTime Birthday { get; set; }
                        }

                        private async Task<Dictionary<int, string>> GetPeople(string value)
                        {
                        var result = _peoples.Where(q => string.Concat(q.Name, " ", q.Family).Contains(value)).Take(50)
                        .ToDictionary(k => k.Id, v => string.Concat(v.Name, " ", v.Family));

                        //just for show spiner in demo mode
                        await Task.Delay(2000);

                        return result;
                        }

                        }
                    
حالت نمایش با کانتینر و نمایش شناسه انتخاب شده(display flex)
Output Preview

Code

                        <div class="row" style="font-size:small">
                        <div class="col-auto p-1">
                        <div class="row">
                        <Zeon.Blazor.ZInputContainer.ZInputContainer Width="70%" TModel="string" For="فروشنده" Display="flex" CssIcon="fa fa-user">
                        <ZItemChooser KeyType="int" Name="item-chooser-people2" FetchData="GetPeople" OnKeyChanged="OnPeopleSelectedItem1"></ZItemChooser>
                        </Zeon.Blazor.ZInputContainer.ZInputContainer>
                        <Zeon.Blazor.ZInputContainer.ZInputContainer Width="30%" TModel="string" For="شناسه" Display="flex" CssIcon="fa fa-key">
                        <Zeon.Blazor.ZInput.ZInput @ref="ZInputSeller1" Type="int" IsDisabled="true" ></Zeon.Blazor.ZInput.ZInput>
                        </Zeon.Blazor.ZInputContainer.ZInputContainer>
                        </div>
                        </div>
                        <div class="col-auto p-1">
                        </div>
                        </div>

                        @code {
                        public Zeon.Blazor.ZInput.ZInput<int> ZInputSeller1 { get; set; } = null!;

                        protected override void OnInitialized()
                        {
                        for (int i = 0; i < 2000; i++)
                        {
                        _peoples.Add(new People()
                        {
                        Id = i + 1,
                        Name = "میثم",
                        Family = "خادمی" + (i + 1),
                        IsActive = true
                        });
                        }
                        base.OnInitialized();
                        }

                        List<People> _peoples = new();

                        public class People
                        {
                        public People()
                        {
                        Birthday = new DateTime(1992, 07, 01);
                        }
                        public int Id { get; set; }
                        public string Name { get; set; }
                        public string Family { get; set; }
                        public bool IsActive { get; set; }
                        public DateTime Birthday { get; set; }
                        }

                        private async Task<Dictionary<int, string>> GetPeople(string value)
                        {
                        var result = _peoples.Where(q => string.Concat(q.Name, " ", q.Family).Contains(value)).Take(50)
                        .ToDictionary(k => k.Id, v => string.Concat(v.Name, " ", v.Family));

                        //just for show spiner in demo mode
                        await Task.Delay(2000);

                        return result;
                        }

                        private void OnPeopleSelectedItem1(int value)
                        {
                        ZInputSeller1.SetValue(value.ToString());
                        }

                        }
                    
حالت نمایش با کانتینر و نمایش شناسه انتخاب شده(display block)
Output Preview

Code

                        <div class="row" style="font-size:small">
                        <div class="col-auto p-1">
                        <div class="row">
                        <Zeon.Blazor.ZInputContainer.ZInputContainer Width="70%" TModel="string" For="فروشنده" Display="block" CssIcon="fa fa-user">
                        <ZItemChooser KeyType="int" Name="item-chooser-people3" FetchData="GetPeople" OnKeyChanged="OnPeopleSelectedItem2"></ZItemChooser>
                        </Zeon.Blazor.ZInputContainer.ZInputContainer>
                        <Zeon.Blazor.ZInputContainer.ZInputContainer Width="30%" TModel="string" For="شناسه" Display="block" CssIcon="fa fa-key">
                        <Zeon.Blazor.ZInput.ZInput @ref="ZInputSeller2" Type="int" IsDisabled="true"></Zeon.Blazor.ZInput.ZInput>
                        </Zeon.Blazor.ZInputContainer.ZInputContainer>
                        </div>
                        </div>
                        <div class="col-auto p-1">
                        </div>
                        </div>


                        @code {
                        public Zeon.Blazor.ZInput.ZInput<int> ZInputSeller2 { get; set; } = null!;

                        protected override void OnInitialized()
                        {
                        for (int i = 0; i < 2000; i++)
                        {
                        _peoples.Add(new People()
                        {
                        Id = i + 1,
                        Name = "میثم",
                        Family = "خادمی" + (i + 1),
                        IsActive = true
                        });
                        }
                        base.OnInitialized();
                        }

                        List<People> _peoples = new();

                        public class People
                        {
                        public People()
                        {
                        Birthday = new DateTime(1992, 07, 01);
                        }
                        public int Id { get; set; }
                        public string Name { get; set; }
                        public string Family { get; set; }
                        public bool IsActive { get; set; }
                        public DateTime Birthday { get; set; }
                        }

                        private async Task<Dictionary<int, string>> GetPeople(string value)
                        {
                        var result = _peoples.Where(q => string.Concat(q.Name, " ", q.Family).Contains(value)).Take(50)
                        .ToDictionary(k => k.Id, v => string.Concat(v.Name, " ", v.Family));

                        //just for show spiner in demo mode
                        await Task.Delay(2000);

                        return result;
                        }

                        private void OnPeopleSelectedItem2(int value)
                        {
                        ZInputSeller2.SetValue(value.ToString());
                        }

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