PDA

View Full Version : تاخیر در پر شدن Datagrid



Mahbadgroup
سه شنبه 10 مهر 1386, 11:36 صبح
سلام خسته نباشید
من یک بانک دارم که حدود 8000 رکورد دارد می خواهم در یک Datagrid نمایش دهم و اینکار رو با دستور fill انجام دادم اما تاخیر زیادی در لود مشاهده می شود.راه حل چیست؟؟بانک من Sqlserver 2000 می باشد

hassan razavi
سه شنبه 10 مهر 1386, 12:05 عصر
ایا لازمه که تمام رکورد ها را نمایش بدهید ؟
می تونید 100 رکورد را نمایش بدهید و مابقی را در هنگام جستجو برگردانید.
چون کاربر بدون Search نمی تونه در بین 8000 رکورد ، رکورد مورد نظرش رو پیدا کنه و حتما از Search استفاده میکنه

Mahdi.Kiani
سه شنبه 10 مهر 1386, 12:21 عصر
از کنترل backGroundWorker استفاده کنید
این کنترل برای استفاده در مواقعی که یه عمل ممکن زمان خیلی زیادی طول بکشه
اگر چنین اعمالی در برنامه دارین نظیر همین کاری که میخواین انجام بدین بهتره از این ابزار استفاده کنین
همونطور که از اسم این ابزار مشخص عملیاتی را که شما براش مشخص میکنین در حالت background انجام میده و وقتی که کارش تموم شد توسط یه رویداد (runworkercomplete) این مسئله را میشه تشخیص داد
کد ها درون رویداد DoWork نوشته میشوند
رویداد runworkercomplete هم گه گفتم وقتی عملیات تمام شد این رویداد fire میشه
در ضمن میتونید از رویداد progressChanged نیز از روند اجرای اون عملیات مطلع بشین و کار های خیلی زیادی انجام بدین

این هم توضیحات کاملتر در مورد این component (http://msdn2.microsoft.com/en-us/library/8xs8549b.aspx)

موفق باشید

hdv212
سه شنبه 10 مهر 1386, 15:32 عصر
اگر لود کردن داده های صرفا Forward Only هست و فقط میخواهید نمایش بدید، چند نکته رو میتونید رعایت کنید تا سرعت لود داده هاتون بالا بره:
1. قبل از هرچیز از DataReader به جای fill کردن DateSet استفاده کنید(این کار به طرز قابل ملاحظه ای سرعت رو افزایش میده)
2.برای لود داده های از Stored Procedure استفاده کنید.
3.از Index گذاری مناسب استفاده کنید.

PC2st
سه شنبه 10 مهر 1386, 16:31 عصر
ایندکس گذاری باعث افزایش سرعت کوئری گرفتن و باعث کاهش سرعت آپدیت دیتابیس میشه. بهرحال ایندکس گذاری فکر خوبیه :-)

hassan razavi
سه شنبه 10 مهر 1386, 22:47 عصر
نظر من استفاده از Store Procedure و فیلتر کردن داده هاست