View Full Version : سوال: رفع مشکل عجیب در کنترل گرید ویو
majid.mp
یک شنبه 24 دی 1391, 23:51 عصر
با عرض سلام خدمت دوستان
دوستان من یک کنترل گرید ویو را به جدول مورد نظرم بایند نمودم ولی زمانی که در رویداد RowDataBound میخواهم مقادیر را به صورت زیر چاپ کنم سه مقدار اضافی چاپ میکند:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
for (int i = 0; i < GridView1.Rows.Count; i++)
{
Response.Write(GridView1.Rows[i].Cells[0].Text);
}
}
خروجی :
98366
لطفاً راهنمایی بفرمایید که مشکل از کجاست؟
با تشکر.
fakhravari
دوشنبه 25 دی 1391, 00:29 صبح
هدف شما از این کد چی؟
میخواهید جمع مقادیر داشته باشید؟
majid.mp
دوشنبه 25 دی 1391, 10:37 صبح
هدف شما از این کد چی؟
میخواهید جمع مقادیر داشته باشید؟
با تشکر از پاسخ شما
بنده درون این کنترل گرید ویو یک کنترل ریپیتر دارم که با شرط به یک جدول دیگه بایند میشود بنده در این رویداد قصد دارم کنترل ریپیتر را بایند نمایم در واقع میخوام شکل زیر رو طراحی کنم :
98377
لطفاً راهنمایی بفرمایید این راحل که من انتخاب نمودم شدنی است یا خیر؟
با تشکر.
majid.mp
دوشنبه 25 دی 1391, 22:37 عصر
دوستان کسی نیست مارو راهنمایی کنه؟
alihassanabadi
سه شنبه 26 دی 1391, 09:47 صبح
درود
به دو دلیل بایدم مقادیر اضافی چاپ کنه
1- شما باید مقدار i رو از صفر تا i کوچکتر یا مساوی Count منهای یک بدید
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
Response.Write(GridView1.Rows[i].Cells[0].Text);
}
2- دلیل دوم اینکه شما اومدید تو رویداد RowDataBound کد زدید و به ازای بایند شدن هر رکورد کد شما به تعداد for انجام میشه
و اما دو راه حل وجود داره
1- کدد رو ببری توی رویداد DataBound و اونجا به ازای هر for ریپیتر رو بایند کنی
protected void GridView1_DataBound(object sender, EventArgs e)
{
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
Response.Write(GridView1.Rows[i].Cells[0].Text);
}
}
2- و یا اینکه میخوای از روش خودت بری یعنی RowDataBound دیگه نباید For بزنی همون پارامتر e همه کار رو انجام میده
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Response.Write(e.Row.Cells[0].Text);
}
}
و دلیل این if ی که گذاشتم اینه که باید چک کنیم از نوع ردیف بود چاپ کنه به عبارتی اگه این if نباشه بار اول نام اون سلول هم چاپ میکنه
مثل name 1 2 3 میتونید تست بگیرید.
بدرود.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.