PDA

View Full Version : سوال: دیر لود شدن فرم با بالا رفتن حجم داده



s-soleimani
پنج شنبه 12 شهریور 1394, 13:39 عصر
سلام
در برنامه ام یک فرم جستجو دارم که در اون تعداد زیادی کمبو باکس دارم که از جداول متفاوتی از دیتابیس پر میشه. و گرید ویو هم از نوع radgridview هستش و در زمان لود شدن فرم، همه ی دیتا در گرید ویو لود میشه.
کمبو باکس ها از telerik استفاده شده.

الان که حجم دیتا زیاد شده فرم جستجو خیلی دیر لود میشه. و گاهی هم هنگ میکنه .

اشکال از چی هست ؟ از کمبو باکس ها یا گرید ویو؟

ضمنا زمانی که برنامه رو تریس می کنم و كوئری اجرا میشه به سرعت دیتا در Quickwatch نشون ميده . یعنی نتیجه ی کوئری سریع بر میگرده
راه حل چیست؟

rg_BlackRose
پنج شنبه 12 شهریور 1394, 14:33 عصر
سلام

صفحه بندی DataGridView یکی از راه حل ها میتونه باشه. یک راه حل دیگه هم میتونه بازخوانی اطلاعات از جدول توسط یک Thread دیگه باشه.

روش اول کم مورد استفاده قرار میگیره. ولی شما بسته به نیازتون میتونید از روش اول یا دوم استفاده کنید. اگر نیازی به نمایش همه اطلاعات به صورت یکجا ندارید، روش اول رو توصیه میکنم. در غیر اینصورت از روش دوم استفاده کنید.

توضیحات هر دو روش در سایت موجود هست. اگر باز هم نیازی به توضیح بیشتر بود همینجا مطرح کنید

موفق باشید.

s-soleimani
پنج شنبه 12 شهریور 1394, 19:47 عصر
سلام

صفحه بندی DataGridView یکی از راه حل ها میتونه باشه. یک راه حل دیگه هم میتونه بازخوانی اطلاعات از جدول توسط یک Thread دیگه باشه.

روش اول کم مورد استفاده قرار میگیره. ولی شما بسته به نیازتون میتونید از روش اول یا دوم استفاده کنید. اگر نیازی به نمایش همه اطلاعات به صورت یکجا ندارید، روش اول رو توصیه میکنم. در غیر اینصورت از روش دوم استفاده کنید.

توضیحات هر دو روش در سایت موجود هست. اگر باز هم نیازی به توضیح بیشتر بود همینجا مطرح کنید

موفق باشید.
----------------------------------
با توجه به اینکه رفرش داده ها در لحظه برای من اهمیت دارد، کدام روش را پیشنهاد میکنید؟ آیا thread داده ها را رفرش هم میکند؟

pbm_soy
پنج شنبه 12 شهریور 1394, 21:57 عصر
ترد هم رفرش میکند به شرطی که خودتان آنرا انجام دهید
ترد خودش کاری نمیکند
شما توابع خود را میتوانید بصورت معمولی فراخوانی کنید و یا بصورت یک ترد که کارهای وقتگیر مربوط به اینترفیس را اغلب با تردها انجام میدهند

اول این روشها را بطور کلی یاد بگیرید بعد برای کاربردهای خودتان محدود کنید ویا توسعه دهید
بدنیست کدتان را هم اینجحا بگذارید که چگونه داده ها را از دیتابیس واکشی میکنید و چگونه آنها را در لیست و یا جای دیگه نمایش میدهید

s-soleimani
شنبه 14 شهریور 1394, 22:29 عصر
یک سوال دیگه در این رابطه برام خیلی مهمه . اینکه وقتی در یک پیج مثلا 20 رکورد نمایش داده می شود آیا با انتخاب فیلتر و انجام جستجو، جستجو در بین همین 20 رکورد انجام می شود و یا در بین تمام رکورد های select شده از دیتابیس . برای من مهمه که جستجو در بین تمام رکوردها انجام بشود.

ژیار رحیمی
یک شنبه 15 شهریور 1394, 00:21 صبح
در حالت pagging در تمام رکورد ها جستجو انجام میشود

group45
دوشنبه 16 شهریور 1394, 01:02 صبح
یک سوال دیگه در این رابطه برام خیلی مهمه . اینکه وقتی در یک پیج مثلا 20 رکورد نمایش داده می شود آیا با انتخاب فیلتر و انجام جستجو، جستجو در بین همین 20 رکورد انجام می شود و یا در بین تمام رکورد های select شده از دیتابیس . برای من مهمه که جستجو در بین تمام رکوردها انجام بشود.

بستگی داره که دیتا گرید ویوتون به دیتابیس وصله یا اینکه دیتا فقط توش ریخته میشه واسه نمایش که اگه وصل باشه تو کل دیتابیس سرچ میکنه ولی اینم باز به کوئریتون بستگی داره

group45
دوشنبه 16 شهریور 1394, 01:04 صبح
----------------------------------
با توجه به اینکه رفرش داده ها در لحظه برای من اهمیت دارد، کدام روش را پیشنهاد میکنید؟ آیا thread داده ها را رفرش هم میکند؟

شما نمیتونید از ترد استفاده کنید چون کاری که رو گرید ویو انجام میشه و کاری که قراره ترد بکنه به هم وابسته اند
اول باید گرید ویو تون تموم بشه یعنی همون دستور کوئریتون تماما اجرا بشه بعد عملیات دیگه انجام بشه

group45
دوشنبه 16 شهریور 1394, 01:09 صبح
سلام
در برنامه ام یک فرم جستجو دارم که در اون تعداد زیادی کمبو باکس دارم که از جداول متفاوتی از دیتابیس پر میشه. و گرید ویو هم از نوع radgridview هستش و در زمان لود شدن فرم، همه ی دیتا در گرید ویو لود میشه.
کمبو باکس ها از telerik استفاده شده.

الان که حجم دیتا زیاد شده فرم جستجو خیلی دیر لود میشه. و گاهی هم هنگ میکنه .

اشکال از چی هست ؟ از کمبو باکس ها یا گرید ویو؟

ضمنا زمانی که برنامه رو تریس می کنم و كوئری اجرا میشه به سرعت دیتا در Quickwatch نشون ميده . یعنی نتیجه ی کوئری سریع بر میگرده
راه حل چیست؟

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

s-soleimani
دوشنبه 16 شهریور 1394, 13:18 عصر
بهتره هر کاری که میخواین انجام بدید رو فقط از طیق خود sql و با کوئری انجام بدید اینجوری سرعت بالایی دارید
منم همین مشکل رو داشتم چون دستورات جستجومو از مقادیر گرید ویو استفاده میکردم که خیلی طول میکشید ولی از وقتی که دستورمو مستقیم با خود دیتابیس کار کردم سرعت جستجوم عالی شده

شما گفتید که بهتره کارم رو با کوئری انجام بدم در حالی که الان همین طوره، یعنی من دارم با کوئری دیتا رو میگیرم
منظور شما از استفاده از مقادیر گرید ویو در جستجو چیه؟
کد من برای جستجو

(() using (DBTableAdapters.SearchLahAlayehTableAdapter table = new DBTableAdapters.SearchLahAlayehTableAdapter
{
radGridView1.DataSource = table.SearchLahAlayeh(VasolID, DateFrom.Value, DateTo.Value, string.Empty, 0, Convert.ToInt64(txtLaho_Hesab_ID.SelectedValue), Convert.ToInt64(txtLaho_Hesab_fare_Id.SelectedValu e), Convert.ToInt64(txtAlayh_Hesab_ID.SelectedValue), Convert.ToInt64(txtAlayh_Hesab_Fare_Id.SelectedVal ue), Convert.ToInt64(txtSabab_Vasol_Id.SelectedValue), txtTafasil.Text.Trim());
}