BzAutoComplete

تکمیل خودکار

سرچ هوشمند روی لیست استاتیک یا داینامیک

لیست ثابت

ساده ترین حالتش اینه که یه لیست مثلا شهر، استان بهش پاس بدیم

city=

razor
@using BzCore.Components.AutoComplete

<BzAutoComplete TItem="string"
                @bind-Value="_city"
                Label="شهر"
                Items="_cities"
                Clearable
                Placeholder="جستجوی شهر" />

<p>city=@_city</p>

@code {
    private string _city = "";

    private readonly string[] _cities =
    {
        "تهران", "مشهد", "اصفهان", "شیراز", "تبریز",
        "کرج", "اهواز", "قم", "کرمانشاه", "رشت"
    };
}
جستجوی async

در این روش میتونی یه متد بجای لیست وصل کنی و با سرچ مستقیم به api درخواست بزنی همچنین از debounseMs میتونی استفاده کنی برای نگه داشتن حالت تایپ

async=

پارامتر توضیح
Itemsدیتا اصلی مثلا لیست شهرها(قبلا از سرور گرفتی و میخوای بفرستی به کامپوننت)
SearchFuncبجای Items استفاده میشه و متد وصل میکنی و مستقیم با تایپ درخواست به سرور میزنی و سرچ میکنی
MinSearchLengthحداقل کاراکتر برای شروع سرچ
DebounceMsتاخیر بین تایپ و جستجو
Clearableدکمه پاک کردن مقدار
razor
@using BzCore.Components.AutoComplete

<BzAutoComplete TItem="string"
                @bind-Value="_city"
                Label="شهر (async)"
                SearchFunc="SearchCitiesAsync"
                MinSearchLength="1"
                DebounceMs="250"
                Placeholder="حداقل 1 حرف" />

<p>async=@_city</p>

@code {
    private string _city = "";

    private readonly string[] _all =
    {
        "تهران", "مشهد", "اصفهان", "شیراز", "تبریز",
        "کرج", "اهواز", "قم", "کرمانشاه", "رشت"
    };

    // Swap this body for a real API / EF Core call.
    private async Task<IEnumerable<string>> SearchCitiesAsync(string term)
    {
        await Task.Delay(150);   // pretend network latency
        return _all.Where(c => c.Contains(term, StringComparison.OrdinalIgnoreCase));
    }
}