PDA

View Full Version : حرفه ای: جایگذین سریعتر برای combobox



mahlake
شنبه 16 خرداد 1394, 19:36 عصر
با سلام خدمت مهندسین عزیز
بنده یه کومبو باکس دارم که 67 هزار رکورد رو باید از دیتابیس بخونه و تو خودش نشون بده...


حالا مشکل اینجاست که چون اطلاعات با لود برنامه فراخانی میشه سرعت برنامه بسیار کاهش پبدا میکنه حالا میخوام ببینم که چه طور میتونم سرعت فراخوانی این اطلاعات رو بالا ببرم...


هدف از این کار به ظاهر احمقانه فقط استفاده از قابلیت Auto complete برای حدس زدن نام مشتری هایی هست که کاربر در برنامه تایپ میکنه... اما با بالا رفتن تعداد مشتری ها در دیتابیس همش سرعت برنامه کمتر و کمتر میشه...

حالا چه راه حل های جایگزینی برای بنده هست؟

god of war
شنبه 16 خرداد 1394, 21:00 عصر
سلام
اگه با ورود به یک فرم جدید میخوای این اطلاعاتو بخونی و با هر بار لود بری به بانک اره سرعت خیلی میاد پایین
اما میتونی یه بار اطلاعاتئ بخونی بریزی تو datatatable هر بار که میخوای اون فرمو نمایش این datatable بفرست بهش
اگه هم اینجوری نمیخوای بازم فرایند خوندن از بانکو تو لود انجام نده تو فرم parent قبل از show کردن فرم دومت اطلاعاتو بخون بفرست به فرمی که میخوای باز کنی
فک کنم خوب باشه البته :)

mahlake
شنبه 16 خرداد 1394, 21:22 عصر
سلام
اگه با ورود به یک فرم جدید میخوای این اطلاعاتو بخونی و با هر بار لود بری به بانک اره سرعت خیلی میاد پایین
اما میتونی یه بار اطلاعاتئ بخونی بریزی تو datatatable هر بار که میخوای اون فرمو نمایش این datatable بفرست بهش
اگه هم اینجوری نمیخوای بازم فرایند خوندن از بانکو تو لود انجام نده تو فرم parent قبل از show کردن فرم دومت اطلاعاتو بخون بفرست به فرمی که میخوای باز کنی
فک کنم خوب باشه البته :)
برنامه کلا تو یه فرم نوشته شده و یه بار لود میشه... و دقیقا مشکل من تو لود اولیه هست و چون سرور یه جای دیگه هست لود اطلاعات بین 30 ثانیه تا 2 دقیقه متغیره... و فقط یک بار هنگام لود این اطلاعات فراخوانی میشه و فقط نمایش داده میشه... میخواستم توی اولین بار که برنامه داره لود میشه با دسترسی سریعتر اطلاعات رو لود کنم.. که زمان انتظار برای اجرای برنامه رو کاهش بدم

واقعا ممنون برای وقتی که گذاشتید برای راهنمایی بنده

Mahmoud Zaad
شنبه 16 خرداد 1394, 21:44 عصر
سلام
شما خودت یه تکست باکس سفارشی بساز که قابلیت AutoComplete داشته باشه. البته برای اینکه اطلاعات کمتری رو لود کنی در textChanged می تونی بررسی کنی مثلاً اگه کاربر یک یا دو حرف رو تایپ کرد اونوقت شروع به جستجو بشه. ساخت کنترل بالا هم سخت نیست یه لیست باکس یا لیست ویو و ... باید داشته باشی برای نتایج که در ابتدا مخفی هست بعد اگه جستجو نتیجه داشت لیست باکس یا لیست ویو رو نمایش میدی و وقتی هم کاربر آیتم مورد نظر رو انتخاب کرد دوباره لیست باکس یا لیست ویو رو مخفی میکنی. هر بار هم که کاربر چیزی تایپ کرد یا پاک کرد لیست باکس یا لیست ویو رو پاک میکنی مجدداً پر می کنی.

asman.abi
شنبه 16 خرداد 1394, 21:47 عصر
از thread استفاده کن. البته برای کار شما یکم خوب جواب نمیده. چون یه فرمه.

mahlake
شنبه 16 خرداد 1394, 22:24 عصر
از thread استفاده کن. البته برای کار شما یکم خوب جواب نمیده. چون یه فرمه.

میشه یه کم بیشتر توضیح بدید؟
بعد تعداد فورم ها چه ارتباطی با راه حل مشکل من داره؟
من یه فرم لاگینم دارم که البته هنوز هم ارتباط اینا رو نمیفهمم...

mahlake
شنبه 16 خرداد 1394, 22:29 عصر
سلام
شما خودت یه تکست باکس سفارشی بساز که قابلیت AutoComplete داشته باشه. البته برای اینکه اطلاعات کمتری رو لود کنی در textChanged می تونی بررسی کنی مثلاً اگه کاربر یک یا دو حرف رو تایپ کرد اونوقت شروع به جستجو بشه. ساخت کنترل بالا هم سخت نیست یه لیست باکس یا لیست ویو و ... باید داشته باشی برای نتایج که در ابتدا مخفی هست بعد اگه جستجو نتیجه داشت لیست باکس یا لیست ویو رو نمایش میدی و وقتی هم کاربر آیتم مورد نظر رو انتخاب کرد دوباره لیست باکس یا لیست ویو رو مخفی میکنی. هر بار هم که کاربر چیزی تایپ کرد یا پاک کرد لیست باکس یا لیست ویو رو پاک میکنی مجدداً پر می کنی.

این راه حل فوق العاده ایه اما خوب یه مشکل کوچیک هست اونم اینه که من ایدی این نام ها رو هم میخوام... اما اینطوری فقط به نام ها دسترسی خواهم داشت نه ایدی ها...

reza_ali202000
شنبه 16 خرداد 1394, 23:30 عصر
یه تکس باکس بزار زیرش هم دیتاگریدویو. اطلاعاتی رو که میخای توی اون لود کن ولی مخفی باشه. تا تکسباکسه فوکاس شد دیتاگرید شو بشه و توی رخداد تکس چنج تکسباکست دیتا تیبلت رو بر اساس متن ورودی فیلتر کن.
به همین راحتی خیلی هم خوب جواب میده و من الان توی تمام پروژه هام استفاده میکنم.

pbm_soy
یک شنبه 17 خرداد 1394, 00:07 صبح
به این مورد هم توجه داشته باشید که روشهای خواندن از جدول هم تو سرعت تاثیر میگذارد
مثلا با استفاده از دیتا آداپتور و دیتاست ویا اینکه با استفاده از دیتاریدر اینا سرعتهای متفاوتی دارند

mahlake
یک شنبه 17 خرداد 1394, 22:49 عصر
به این مورد هم توجه داشته باشید که روشهای خواندن از جدول هم تو سرعت تاثیر میگذارد
مثلا با استفاده از دیتا آداپتور و دیتاست ویا اینکه با استفاده از دیتاریدر اینا سرعتهای متفاوتی دارند

داداش خدا خیرت بده عجب نکته ای رو گفتی من نمیدونستم... کدوم سریع تره؟ به نظر شما از جه ارتباط هایی استفاده کنم؟
میشه یه کم در این باره هم به بنده اطلاعات بدید من درباره سرعت اینا هیچی نمیدونم... یا اگه یه لینکی چیزی هم باشه که سرعت کد های مختلف توی sql یا C# رو هم مقایسه کرده باشه خیلی خوب و عالی میشه که من یه کد با سرعت بالا تر برای این مشکلم بنویسم...

خدا همه شما دوستان رو برای ما نگه داره... مرسی:قلب::قلب::قلب::قلب::قلب:: لب::قلب::قلب::قلب:

mahlake
یک شنبه 17 خرداد 1394, 22:53 عصر
یه تکس باکس بزار زیرش هم دیتاگریدویو. اطلاعاتی رو که میخای توی اون لود کن ولی مخفی باشه. تا تکسباکسه فوکاس شد دیتاگرید شو بشه و توی رخداد تکس چنج تکسباکست دیتا تیبلت رو بر اساس متن ورودی فیلتر کن.
به همین راحتی خیلی هم خوب جواب میده و من الان توی تمام پروژه هام استفاده میکنم.
با سلام مرسی از راهنمایی مفیدتون من خوب این قسمت حرفاتون رو بلد نیستم میشه با یه سمپل کد برام مسال بزنید اگه امکانش هست؟ ((دیتا تیبلت رو بر اساس متن ورودی فیلتر کن))
مرسی بابت راهنمایی تون ولی یه سوال دیگه خوب پرکردن دیتا گرید ویو با 67 هزار رکورد خودش کلی زمان میبره... اون رو چیکار کنم؟

reza_ali202000
دوشنبه 18 خرداد 1394, 03:54 صبح
یه خورده نیاز به کار داره چون خیلی خیلی سریع امادش کردم ولی کار را بنداز هس.
توی تمام برنامه هام از این نوع کد نویسی استفاده میکنم. ولی چون از کامپونین زیاد استفاده میکنم نمیشد مستقیما از برنامه هام که بدون ارور هس استخراج کنم.