PDA

View Full Version : اشتباه نشان دادن شماره ردیف عنگام رفتن به صفحه قبلی



jeniferxp
چهارشنبه 10 بهمن 1386, 16:39 عصر
با سلام
دوستان من از تابعی که دوستان زحمت کشیده بودند جهت نشان دادن شماره ردیف در گرید در
itemtemplate با مشکلی مواجه شدم این که وقتی pagesize را زیاد میکنم با رفتن به صفحه بعدی اشتباه نشان میدهد از طرفی با رفتن به صفحه قبلی همچنان به count اضافه میشود.
میشه لطفا راهنماییم کنید.

dr_csharp
چهارشنبه 10 بهمن 1386, 16:52 عصر
سلام
موقعی که میخوای تو رویداد RowDataBound روی ItemTemplate مربوط به ردیف کار کنی رعایت 2 نکته ضروریه :
اولا برای شماره ی ردیفت از RowIndex استفاده کن ، دوما RowIndex رو در PageSize ضرب کن تا در صفحه های بعدی مجدد صفر نشه و مقدار واقعی رو نشونت بده :لبخندساده:

mehrdad201
چهارشنبه 10 بهمن 1386, 16:53 عصر
شما باید شماره ردیف رو برحسب page size و pageindex نشون بدی
یه متغیر اینت هم هست که تو rowdatebind مقدارش زیاد میشه (واسه هر سطر میشه سطر قبلیش به علاوه یک)

اگه فرض کنیم pageindex از 1 شروع بشه. این شکلی میشه:


(pageindex * pagesize) + counterاگه pagesize رو 5 در نظر بگیری اینطوری میشه

page1:
1-2-3-4-5
page2:
6-7-8-9-10

jeniferxp
چهارشنبه 10 بهمن 1386, 21:58 عصر
دوست عزیز من هم همین کار را کردم ولی به عنوان مثال وقتی pagesize=5 به صفحه دوم و مابقی صفحات میرم اعداد ردیفم درست نشان داده میشوند ولی مثلا وقتی از صفحه دوم به صفحه اول میرم به جای اینکه اعداد دوباره از 1 شروع شوند آخرین شماره ردیف دیده شده به اضافه یک واحد دیده میشود .
من باید چجوری بگم وقتی به صفحه قبلی میری از ادامه count نشان داده نشه.
با تشکر



protected void RadGrid2_PageIndexChanged(object source, GridPageChangedEventArgs e)
{

Count = (RadGrid2.PageSize * RadGrid2.CurrentPageIndex);

}

scorpion_man
چهارشنبه 10 بهمن 1386, 22:46 عصر
دوست عزیز فکر میکنم میدونید که pageindex باید از 0 شروع بشه تا معادله دوستان جواب بده تو این صورت فکر نمیکنم هیچ مشکلی باشه
موفق باشید

jeniferxp
شنبه 13 بهمن 1386, 21:28 عصر
با سلام مجدد
دوستان با عرض معذرت ، من هنوز با این شماره ردیف مشکل دارم
از طرفی تمام راهها را هم رفتم جواب نداد که نداد .....
همچنان که به صفحه قبلی grid میرم شماره ها در حال افزایش هستند بدون اینکه در نظر بگیرد که در صفحه قبلی باید شماره های قبلی را نشان دهد.
لطفا میشه منو راهنمایی کنید.
با تشکر

jeniferxp
دوشنبه 15 بهمن 1386, 08:17 صبح
دوستان کسی نیست منو راهنمایی کنه؟
آخه کارم گیره به خدا.......

mahdi_farhani
دوشنبه 15 بهمن 1386, 08:41 صبح
تو رویداد RowCreated یا DataBind اینو بزار

Label lbltemp;
int rowIndex;
if (e.Row.RowType == DataControlRowType.DataRow)
{
lbltemp = (Label)e.Row.FindControl("lblRow");
rowIndex = (e.Row.RowIndex + 1) + (gvUser.PageIndex * gvUser.PageSize);
lbltemp.Text=rowIndex.ToString();
}
خودت یه مقدار باید تغییرش بدی .!!!!

scorpion_man
دوشنبه 15 بهمن 1386, 10:14 صبح
تو رویداد RowCreated یا DataBind اینو بزار

Label lbltemp;
int rowIndex;
if (e.Row.RowType == DataControlRowType.DataRow)
{
lbltemp = (Label)e.Row.FindControl("lblRow");
rowIndex = (e.Row.RowIndex + 1) + (gvUser.PageIndex * gvUser.PageSize);
lbltemp.Text=rowIndex.ToString();
}
خودت یه مقدار باید تغییرش بدی .!!!!

سلام مهدی جان کدها رو که نیگا کردم دیدم شما قصد دارید با postback عمل paging رو انجام دهید که به نظر من اصلا کار صحیحی نیست چون paging یکی از ابزارهای موتورهای جستجو که میتونه بین صفحات حرکت کنه و توصیه میشه از querystring برای نشان دادن صفحات استفاده بشه
موفق باشید

mahdi_farhani
دوشنبه 15 بهمن 1386, 14:27 عصر
من نمیفهمم Pageing چه ارتباطی به موتور جستجو داره .....
به فرضی هم که یه همچنی مشکلی باشه ، چرا خوده Microsft چیزی به نام Pageing داخل گرید ویو گذاشته ، میگفت برید خودتون Pageing بسازید ؟؟؟؟؟

jeniferxp
سه شنبه 16 بهمن 1386, 10:30 صبح
با تشکر از شما که سوال منو پیگیری می کنید.
از آنجا که من با gridview کار نمیکنم و با radgrid از مجموعه کامپوننتهای www.telerik.com کار میکنم کد e.row.rowtype ندارد و به جای آن باید e.item.itemtype را نوشت . من این تغییرات را اعمال کردم برنامه هم درست نشان می دهد یعنی با رفتن به صفحه قبلی اعداد ردیف را درست نشان می دهد با این تفاوت که اعداد ردیف من به صورت فرد درآمده اند یعنی به صورت 1 و 3و 5و 7 و9 و..... تبدیل شدند .
من باید چه تغییری در کد بدهم؟
بازهم از راهنمایی های شما ممنون.

scorpion_man
سه شنبه 16 بهمن 1386, 22:56 عصر
من نمیفهمم Pageing چه ارتباطی به موتور جستجو داره .....
به فرضی هم که یه همچنی مشکلی باشه ، چرا خوده Microsft چیزی به نام Pageing داخل گرید ویو گذاشته ، میگفت برید خودتون Pageing بسازید ؟؟؟؟؟
دوست عزیز اتفاقا paging خیلی ربط به موتور جستجو داره
من فکر میکردم میدونید که عمل postback با کدهای javascript نوشته میشن و موتورهای جستجو با کدهای جاوا مشکل دارند و فکر میکردم میدونید که viwewstate ها هنگام redirect که در Paging بدون postback کارایی ندارند و از بین میرن یعنی عملیاتی که برای Paging با ساختار postback وجود داره با paging با متدهای redirect کاملا متفاوت هست
و فقط بنده پیشنهاد کردم که وقتتونو متمرکر کنید به کار با pager با اصول redirect نه کار با اصول postback که این کدهای شما نیز این مشکل رو داشتند حالا خود دانی
موفق باشید