PDA

View Full Version : آموزش: افزودن خصوصیت paging به کنترل DataList به علاوه query SQL بهینه شده - صفحه بندی



hamed_hossani
سه شنبه 08 مرداد 1392, 13:35 عصر
سلام
قبلا نوشته شده بود ولی کدش کوری SQL بهینه نبود

یکی از موضوعاتی که معمولا برنامه نویسان محیط ASP.NET با آن مواجه هستند صفحه بندی اطلاعات دریافتی از دیتابیس درون GridView است ( که براحتی قابل انجام هست) . از طرفی در بسیاری از مواقع دوست داریم اطلاعات رو در بیش از یک ستون نمایش دهیم که مجبوریم از کنترل DataList استفاده کنیم چون GridView خاصیت RepeatColumns رو نداره و دقیقا مشکل همین جاست زیرا DataList هم خاصیت paging رو نداره . بنابراین برای استفاده از هر دو خاصیت RepeatColumns و paging به مشکل بر خواهیم خورد .
منبع (http://barnamenevis.org/showthread.php?304184-%D8%A7%D9%81%D8%B2%D9%88%D8%AF%D9%86-%D8%AE%D8%B5%D9%88%D8%B5%DB%8C%D8%AA-paging-%D8%A8%D9%87-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-DataList&highlight=paging+datalist)


و query Sql بهینه شده :



SELECT top (10) id,mytext,des from
(
SELECT RowID = ROW_NUMBER() OVER (ORDER BY id), TotalRows=Count(*) OVER(),id,mytext,des
FROM tb1
)
A where A.RowId> ((1)*10)

در هر صفحه 10 مورد نشان می دهد

SELECT top 10
در شرط

A where A.RowId> ((1)*10)
1 شماره صفحه است که قراره نشان داده بشه، که از صفر شروع میشه 0و1و2و3و...
و 10 همان تعداد ایتم هایی است که در هر صقحه نشون داده میشه

برای جذول tb1 با ستون های id,mytext,des

mehdiba3
دوشنبه 15 اردیبهشت 1393, 00:04 صبح
میشه مشکل من رو حل کنید؟ ممنون
بنطرون در برنامه دفترچه تلفن با یک میلیون رکورد و 4 میلیون فیلد ، زمانی که فرم لود میشه برای کاربر میخوام همه 1 میلیون رکورد رو نمایش ندم و فقط مثلا 10 تا 10 تا درون دیتاگرید اطلاعات نمایش داده بشه و زمانی که کاربر اسکرول دیتاگرید رو پایین آورد رکورد ها 10 تا 10 تا بیان از دیتا بسیس تو گرید و با این کار سرعت بالا بره. بنظرتون چیکار باید بکنم و چطور صفحه بندی رو انجام بدم؟
مشکل دیگه من در عملیات جستجو است که اومدم در فیلد تکس باکس نام خانوادگی در رویداد textchange اون هر بار عملیات جستجو رو بر اساس یک حرف رو انجام میدم و این باعث شده سرعت جستجو به دیلی تعداد زیاد فیلد ها (4 میلیون) خیلی کند بشه. بنطرتون چه راهکاری رو پیشنهاد می کنید