نصب و آموزش کامپوننت انتخابگر آیتم 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()); } }