PDA

View Full Version : custom paging gridview



b.paseban
سه شنبه 14 تیر 1390, 20:34 عصر
سلام بر تمامی دوستان.
من یه کد از توی اینترنت پیدا کردم که بصورت زیر میاد و داخل template paging یه سری دکمه بصورت داینامیک ایجاد میکنه وبه هر کدوم یه command name و یه command argument میده برای رفتن به صفحه مورد نظر.
حالا من میخوام برای این کد یه کاری انجام بدم که اگر تعداد صفحات زیاد بود بیاد بطور مشخصی (مثل همین paging سایت ) صفحات رو نشون بده.
حالا یه مشکلی که هست من نمیتونم کاری کنم که paging بصورت دلخواه من در بیاد.(مثلا در صورت وجود بیشتر از 100 صفحه بیاد صفحات 1 تا 10 رو نشون بده و بعدشم و صفحه 20 و 30 و الی آخر.
یه چیزی مثل همین سایت.)
در ضمن من میخوام فیلتری برای کاربر بزارم که تعداد نتایج در صفحه رو خودش معین کنه،مثلا 20 تا در صفحه و یا 10 تا در هر صفحه و یا نمایش بصورت صعودی و یا نزولی بر اساس یک فیلد.
کد مربوطه:


GridViewRow grw = Gv.BottomPagerRow;
int pagecount = Gv.PageCount;
int pageindex = Gv.PageIndex;
//Create Numbers If:PageCount<10
for (int i = 2; i < pagecount; i++)
{
LinkButton btn = new LinkButton();
string btninfo = "Page" + i.ToString();
btn.Text = btninfo + "&nbsp;&nbsp;";
btn.ID = btninfo;
btn.Font.Underline = false;
if (i == Gv.PageIndex + 1)
{
btn.BackColor = Color.Red;
btn.Font.Bold = true;
btn.ForeColor = Color.White;
}
btn.CommandArgument = i.ToString();
btn.CommandName = "Page";
btn.ToolTip = btninfo;
PlaceHolder pnl = grw.FindControl("pnl") as PlaceHolder;
pnl.Controls.Add(btn);
}

pnl توی این کد یه PlaceHolder هست داخل تگ <PagerTemplate> گرید ویو.
gv هم ای دی گرید ویو هست.
حالا این کار(درست کردن paging به این روش) درست هست یا نه؟
اگه هست چطوری باید مثل همین paging سایت درآوردش؟
اگه نه راه درست چیه؟باید طرف sql ما paging رو درست کنیم؟(یه چیزایی توی سایت دربارش خوندم ولی کامل نه)
اگر سورسی یا مقاله ای هست ممنون میشم راهنمایی کنید.

dontspeak
چهارشنبه 15 تیر 1390, 01:38 صبح
سلام دوست عزیز اگه می خوای حتما با گرید خود asp این کارو بکنی که هیچی. اما یه کامپوننت هست که گرید ویو اون تمام این امکانات رو داره. یعنی می تونی هم pagingرو داشته باشی و هم فیلتر و ... . این گرید جزء کامپوننتهای obout هست استفاده ازشم آسونه. در مورد استایلشم توی خود سایتش توضیح داده. اگه سوالیم بود در خدمتم
موفق باشید

b.paseban
پنج شنبه 16 تیر 1390, 20:57 عصر
ممنون از پاسختون ولی من نمیخوام از کامپوننت استفاده کنم(کامپوننت های Telerik هم اینکار رو انجام میدن)
کسی از دوستان درباره چگونگی انجام paging مطلبی نداره؟
من مشکلی با اعمال فیلتر ندارم.
فقط نحوه صحیح paging در gridview رو نمیدونم.(برای تعداد رکورد بالا)

dontspeak
پنج شنبه 16 تیر 1390, 22:28 عصر
خوب چرا مثلا 10 تا 10 تا نمی خونی؟ بیای یه sqldatasource بزاری بعد قسمت where اونو با کد نویسی درست کنی و top10 ازش بگیری؟

b.paseban
شنبه 18 تیر 1390, 21:05 عصر
فرض کن نتایج جستجوی ما برای گرید ویو 432 صفحه باشه.
من میخوام که نتایج به اینصورت نمایش داده بشه:
1.2.3.4.5.6.7.8.9.10.20.50.100.200.400
و دو تا لینک برای صفحه آخر و اول (البته برای اول در صورتی که ما بریم به صفحه ای بیش از 10 مثلا 13 ).
خو حالا وقتی ما توی صفحه ای مثل 23 هستیم به این صورت در بیاد:
first page,23,24,25,26,27,28,29,30,31,32,33,43,73,113,21 3,413,LastPage
خوب همینطور که معلومه paging ما از صفحه کنونی شروع میشه و به نه تا صفحه بعد میره و بعد 20 تا صفحه جلوتر از صفحه کنونی و بهمین ترتیب.
میشه بگید برای اینکار و یا شبیه به این ما باید چه الگوریتمی بنویسیم؟(بازم میگم paging شبیه به همین سایت)

dontspeak
یک شنبه 19 تیر 1390, 01:40 صبح
سلام
سختی کار شما اینجاست

1.2.3.4.5.6.7.8.9.10.20.50.100.200.400

که واسه اونم چون با دستورات if و امثالهم کار داریم میشه زیر گرید یه لیبل گذاشت بعد توی لیبل کدهای html رو وارد کنیم. ببین مثل این


Label1.Text = "<center>شما با یک خطا مواجه شدید در صورت تکرار خطا با ما تماس بگیرید <br/><a href=\"mailto:Info@LearningWeb.ir?subject=errorpage400\">Info@LearningWeb.ir</a></center>";

البته زیاد به کد توجه نکن چون اینو از یکی از پروژه های تستیم کپی کردم
میشه به همین روش لینک اضافه کرد. خیلی راحتم میشه بررسی کرد که مثلا اگه از 20 تا رکورد بیشتر بود بعد 10 تا رکورد دیگه 10 تا 10 تا جلو بره مثل همون قسمتی که توی نقل قول گذاشتم. برای صفحه اول و آخرم که میشه چک کرد که توی کدوم صفحه هستیم بعد اون کاری رو که گفتید انجام داد منظورم این قسمته

first page,23,24,25,26,27,28,29,30,31,32,33,43,73,113,21 3,413,LastPage

و یه نکته می مونه قطعا میشه از query string به راهتی برای حل خیلی از مسائل در این مورد کمک گرفت