PDA

View Full Version : اضافه کردن ردیف به دیتاگرید



jannati
یک شنبه 22 شهریور 1383, 14:53 عصر
با سلام به دوستان عزیز
میخواستم بدونم چطور میشه به دیتاگرید شماره ردیف اضافه کرد.چون من برای پرینت اطلاعات نیاز دارم که اطلاعاتم شماره ردیف داشته باشند.
از داخل دیتابیس هم که قابل استخراج نیست.شما چه پیشنهادی میکنید؟

Abbas Arizi
یک شنبه 22 شهریور 1383, 15:04 عصر
یک ستون برای ردیف در نظر بگیرید بعد از رویداد ItemDataBound استفاده کنید:

private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
e.Item.Cells[0].Text = e.Item.ItemIndex.ToString();
//if paging was enabled
/*int intRowNumber = e.Item.ItemIndex + (DataGrid1.PageIndex * DataGrid1.PageSize) + 1;
e.Item.Cells[0].Text = intRowNumber.ToString();*/

}
خط اول برای حالت بدون Paging و خطوط بعد برای وقتی است که paging فعال باشد

علاوه بر این میتونید یک TemplateColumn ایجاد کنید و به این شکل شماره ردیف رو داخل اون رندر کنید:

<%#Container.ItemIndex + (DataGrid1.PageIndex * DataGrid1.PageSize) + 1%>

jannati
یک شنبه 22 شهریور 1383, 15:43 عصر
ممنون از راهنماییتون
اما من با دوتا مشکل مواجه شدم:
1-pageindexشناخته نشد که به جای اون pagecountگذاشتم .نمایش داده شد .اما شمارش از 10شروع میشه.(من هر صفحه دیتاگرید را 10تا 10تا تعریف کردم)
2-در headerبه جای کلمه ((ردیف))شماره وارد میشود.
3-در ضمن میشه بگید چطور رندر کنم؟
بازم ممنونم :flower:

Abbas Arizi
یک شنبه 22 شهریور 1383, 16:18 عصر
به جای PageIndex بگذارید: CurrentPageIndex. یه کم اشتباه شد. :oops: این کارو که انجام بدید اون مشکل شروع از 10 هم حل میشه.

باری این که توی Header چیزی قرار نگیره ItemType رو چک کنید به این صورت:

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{

}
برای روش دوم همون عبارتی رو که گفتم با اصلاحات (‍CurrentPageIndex به جای PageIndex) توی فایل aspx یا ascx که دیتاگرید توی اون هست داخل ItemTemplate بنویسید

jannati
سه شنبه 24 شهریور 1383, 07:59 صبح
واقعا ممنونم.درست شد. (:D) :heart: :flower: :gift: