دسته بندی ها
15:18 1400/05/15

نمایش اطلاعات زیاد در پلاگین select2 و مشکل Load شدن کند Page

مشخصات سوال کننده :
کاربر : frisat     امتیاز کاربر : ‎−2     رتبه کاربر : 7082
دسته بندی : Asp.net Core جاوا اسکریپت

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3257
پاسخ دهنده : fateme 15:35 1400/05/16

شما وقتی قصد دارید اطلاعات رو از دیتابیس توسط انتیتی فریم ورک فراخوانی کنید به روشهای مختلفی مثل eagle Loading (برای اطلاعات در حجم کم و سرعت بالا) و یا Lazy Loading (برای اطلاعات در حجم بالا) می تونید استفاده کنید. که برای این منظور لینک زیر رو مطالعه کنید.

تفاوت بین IEnumerable و IQueryable

 

اما خب مورد شما کمی متفاوت هست. شما میخواهید حدود 130 هزار رکورد رو از دیتابیس واکشی کنید و در یک تگ select نمایش بدید. خب شما به هر روشی کار کنید قدری delay یا تاخیر خواهید داشت چون در هر صورت واکشی 130 هزار رکورد قطعا زمان زیادی از سرور رو میگیره. خصوصا اگر تعداد کاربران سیستم شما زیاد باشه نتایج بسیار بدی می بینید. فرض کنید همزمان 100 کاربر به این View درخواست نمایش بفرستن. اونجا قطعا سرور دچار هنگی میشه.

ببینید به نظر من راه حل این مشکل این هست که شما 130 هزار رکورد رو همزمان واکشی نکنید.

راه حل اول : اولین راه حلی که میشه روش کار کرد این هست که این اطلاعات رو توسط یک شاخص تقسیم بندی کنید. مثلا اگر لیست تمامی شهرها و روستاها و شهرستان ها رو در یک جدول دارید خب توسط یک فیلد مشخص کنید استان هر کدوم چی هست. به این صورت شما میتونید دو تا تگ select داشته باشید. اولی لیست استان ها که با انتخاب هر استان شهرها و شهرستان های همون استان نمایش داده بشه. البته این کار رو باید از ابتدای طراحی سیستم انجام می دادید.

 

راه حل دوم : دومین راه حل این هست که شما اصلا از select2 استفاده نکنید. کامپوننت select2 برای زمانی هست که شما قصد دارید بیش تر از یک آیتم رو انتخاب کنید. مثلا لیست علاقمندیهای یک شخص که ممکنه بیش از یک علاقمندی داشته باشه. پلاگین Select2 قابلیت جست و جو هم داره ولی همه اطلاعات رو واکشی میکنه و برای اطلاعات در حجم زیاد کند هست. ولی شما ظاهرا نیازی ندارید چند آیتم رو انتخاب کنید. خب در این صورت میتونید از خاصیت AutoComplete مربوط به خود تگ input استفاده کنید. به تصویر زیر دقت کنید :

 

خاصیت autocomplete در input

 

همونطوری که می بینید در اینجا دیگه ما کمبوباکس نداریم. یک تگ input ساده داریم که خاصیت autoComplete فعال شده براش. و 2 یا 3 یا بیشتر (قابل تنظیم) حرف که وارد میشه خودش در دیتابیس جست و جو میکنه و موارد پیدا شده رو نمایش میده و میتونید انتخاب کنید. مثلا در تصویر بالا کلمه "درخ" نوشته شده و همه عبارتهایی که شامل این کلمه هستن از سمت دیتابیس واکشی شدن و نمایش داده شدن. دقت کنید این یک تگ input هست نه کمبوباکس !

آموزش استفاده از قابلیت AutoComplete

ویرایش شده در شنبه 16 مرداد 1400 ساعت 16:11:12
به این پاسخ امتیاز بدهید    1
امتیاز: 1617 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود