PDA

View Full Version : استفاده از DataGridView برای داده های زیاد



vapa_71
پنج شنبه 21 دی 1391, 11:34 صبح
سلام دوستان اگه ما یک جدول داخل دیتابیسمون داشته باشیم که دارای 7-8 فیلد باشه و روزانه حداقل 5 رکورد به جدول اضافه بشه
آیا استفاده از DataGridView برای نمایش اطلاعات مشکلی بوجود نمیاره ؟
سوال دوم هم اینه مثلا وقتی 50 تا رکورد داخل دیتاگریدویو داریم این اطلاعات رو صفحه بندی میکنه ؟ یا 50 تا رکورد رو یکجا نمایش میده ؟
سوال سوم هم اینکه مرتب سازی DataGridView به چه شکله مثلا داده های جدید رو اول نشون بده بعد بره واسه قدیمی ها

ممنون

رها
پنج شنبه 21 دی 1391, 11:41 صبح
سلام
DataGridView میتونه رکوردها رو صفحه بندی بندی کنه تعداد رکوردهای هر صفحه رو شما مشخص میکنید. ترتیب نمایش رکوردها هم بستگی به نوع مرتب سازی رکوردها در دستور SQL شما داره هرجوری مرتبشون کنی همونجوری نشون میده. هرچند که میتونی طوری گریدویو رو تنظیم کنی که با کلیک کردن بر روی عنوان ستونها براساس اون ستون مرتب بشه.

vapa_71
پنج شنبه 21 دی 1391, 11:44 صبح
ممنون یعنی برای داده های زیاد مشکلی پیش نمیاد دیگه ! هر چقدرم زیاد باشه؟ مثلا سرعت برنامه کند نمیشه >؟

vapa_71
پنج شنبه 21 دی 1391, 11:47 صبح
ببخشید صفحه بندی به صورت خودکاره ؟ یا کد نویسی لازم داره

RED-C0DE
پنج شنبه 21 دی 1391, 11:55 صبح
بسته ب سیاست کاریتون و چیزی ک ممکنه مد نظر مشتری باشه می تونین:

صفحه بندی انجام بدین (باید خودتون انجامش بدین یا از کامپوننتهای (گریدهای) آماده ک این رو پیاده کردن استفاده کنین)
تمام رکوردها رو تا جایی ک می شه بصورت بهینه نمایش بدین (بسته به سرعت و توانایی و حجم حافظه ی سیستم مقصد و معماری برنامتون (کلاینت-سرور، چندلایه ، ...) کارایی متفاوت می شه) (منظور از بهینه یعنی اگه هم می خواین تمام رکوردها رو نمایش بدین، ی حساب سرانگشتی بکنین چ فیلدهایی واقعا نیازه، چ فیلدهایی رو باید از بانک کوئری بگیرین، حجم هر رکورد با جمع حجم فضای اشغالی توسط فیلدها چقدر می شه ، ...)
بصورت Asynchronous کار کنین و دیتا رو در گرید نمایش بدین (نیاز ب دونستن مفاهیم بیشتری هستین. باید چیزای بیشتری رو هندل کنین. سرعت شاید کندتر بشه ولی برنامه NotResponding نمی شه و کار می کنه مثل وقتی ک تو خود SqlManagement کار می کنین و دیتا رو بصورت لحظه ای می بینین)
با کمک حالت VirtualMode که دیتاگرید داره می تونین عملیات مربوط به نمایش داده ها رو خودتون هندل کنید (ک نیاز به کار بیشتری ممکنه داشته باشه)

vapa_71
پنج شنبه 21 دی 1391, 12:02 عصر
خب پس DataGridView معمولی خود C# توانایی صفحه بندی نداره گرید آماده باید از کجا گیر بیارم و چطور استفاده کنم ؟

Mahmoud.Afrad
پنج شنبه 21 دی 1391, 15:56 عصر
برای صفحه بندی یاید کوئری رو بر حسب نیازتون تغییر بدید. در این پست (http://barnamenevis.org/showthread.php?64210-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%DA%A9%D9%88%DA%86%DA%A9-%D9%88-%D9%85%D9%81%D9%8A%D8%AF-%D8%AF%D8%B1-%D8%B3%D9%8A-%D8%B4%D8%A7%D8%B1%D9%BE&p=1667215&viewfull=1#post1667215) یک نمونه بر مبنای ADO.NET هست که کدنویسی کردم.
اگر با linq کار میکنید که راحت تر هم هست.

plus
پنج شنبه 21 دی 1391, 16:04 عصر
در صورتی که تعداد رکوردهای مورد نظرتون برای نمایش خیلی زیاد باشه، مثلا 10000 تا، بهتره این 10000 تا رکورد رو یکجا از دیتابیس نخونید.در این حالت باید DataGridView رو در حالت VirtualMode باهاش کار کنید تا فقط داده هایی که نمایش داده میشن از دیتابیس لود بشن. http://msdn.microsoft.com/en-us/library/15a31akc.aspx