شمارش ردیف های دیتاگرید بصورت شرطی
سلام
روز بخیر
من یه دیتا گرید دارم که فعلا به جایی بایند نیست و توسط کاربر بصورت دستی پر میشه
حالا میخوام با یه شرط تعداد نفراتی که امتیازشون از صفر بزرگتره رو متوجه بشم
این کد رو نوشتم ولی جواب نگرفتم
for (int i = 0; i < DGVOrganScore.RowCount -1; i++)
{
LblAverage.Text = (Convert.ToInt32(DGVOrganScore.Rows[i].Cells["Score"].Value) > 0).ToString();
}
نقل قول: شمارش ردیف های دیتاگرید بصورت شرطی
نقل قول:
LblAverage.Text = (Convert.ToInt32(DGVOrganScore.Rows[i].Cells["Score"].Value) > 0).ToString();
سلام آخه اینجوری نمیشه که ، همیشه آخرین مورد رو نشون میده
حداقل اینجوری بنویس تست کن
LblAverage.Text += "(" + (Convert.ToInt32(DGVOrganScore.Rows[i].Cells["Score"].Value) > 0).ToString() + ") ";
نقل قول: شمارش ردیف های دیتاگرید بصورت شرطی
نقل قول:
نوشته شده توسط
شهابسلطانی
سلام
روز بخیر
من یه دیتا گرید دارم که فعلا به جایی بایند نیست و توسط کاربر بصورت دستی پر میشه
حالا میخوام با یه شرط تعداد نفراتی که امتیازشون از صفر بزرگتره رو متوجه بشم
این کد رو نوشتم ولی جواب نگرفتم
for (int i = 0; i < DGVOrganScore.RowCount -1; i++)
{
LblAverage.Text = (Convert.ToInt32(DGVOrganScore.Rows[i].Cells["Score"].Value) > 0).ToString();
}
سلام
شما می خوای جمع عدد توی هر خونه رو داشته باشی !! پس اون >0 اونجا چی می گه؟!؟؟!
نقل قول: شمارش ردیف های دیتاگرید بصورت شرطی
نقل قول:
نوشته شده توسط
ROSTAM2
سلام
شما می خوای جمع عدد توی هر خونه رو داشته باشی !! پس اون >0 اونجا چی می گه؟!؟؟!
نه اصلا جمع نمیخوام
من دنبال count هستم
میخوام توی دیتاگرید ویو بدونم ردیفهایی که بزرگتر از صفر هستن چندتا هستن؟
نقل قول: شمارش ردیف های دیتاگرید بصورت شرطی
نقل قول:
نوشته شده توسط
شهابسلطانی
سلام
روز بخیر
من یه دیتا گرید دارم که فعلا به جایی بایند نیست و توسط کاربر بصورت دستی پر میشه
حالا میخوام با یه شرط تعداد نفراتی که امتیازشون از صفر بزرگتره رو متوجه بشم
این کد رو نوشتم ولی جواب نگرفتم
for (int i = 0; i < DGVOrganScore.RowCount -1; i++)
{
LblAverage.Text = (Convert.ToInt32(DGVOrganScore.Rows[i].Cells["Score"].Value) > 0).ToString();
}
منطق کدی که نوشتی با چیزی که میخواهی اصلا همخوانی نداره.
خودت اگر بخواهی بشماری چطور عمل میکنی؟! همونو کد کن
نقل قول: شمارش ردیف های دیتاگرید بصورت شرطی
سلام
در رویداد CellFormatting دیتاگرید کد بنویسید :
حلقه For هم نیازی نیست !
if (Convert.ToInt32(DGVOrganScore.Rows[e.RowIndex].Cells["Score"].Value) > 0)
{
DGVOrganScore.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.ForeColor= Color.FromArgb(0, 255, 0); // Make the Positive score green ;)
}
برای تعداد Score های بالای صفر هم در رویداد RowsAdded میتونی محاسبه کنی ( اصولش این بود که در رویداد DataBindingComplete بنویسی ولی چون شما به جایی Bind نیستی نمیشه)
در رویداد RowAdded میتونی یه متغییر int که در Scope بیرون از رویداد تعریف شده رو Increase کنی.
if (Convert.ToInt32(DGVOrganScore.Rows[e.RowIndex].Cells["Score"].Value) > 0)
{
PositiveScoresCounter++;
}
نقل قول: شمارش ردیف های دیتاگرید بصورت شرطی
نقل قول:
نوشته شده توسط
ShayanFiroozi
سلام
حلقه
For هم
نیازی نیست !
برای تعداد Score های بالای صفر هم در رویداد
RowsAdded میتونی محاسبه کنی
در رویداد
RowAdded میتونی یه متغییر
int که در
Scope بیرون از رویداد تعریف شده رو
Increase کنی.
if (Convert.ToInt32(DGVOrganScore.Rows[e.RowIndex].Cells["Score"].Value) > 0)
{
PositiveScoresCounter++;
}
سلام و روز خوش
این کد شما اشکال داره!
یکی این که رخداد rowsadded وقتی اجرا میشه که یک row به دیتاگرید اضافه بشه،
حتی پیش از cellbeginedit ،
یعنی در اون موقع هنوز هیچ مقداری واسه سلول ها مشخص نیست،
پس اون if هیچوقت true نمیشه چون همیشه مقداراون سلول (و همچنین بقیه سلول ها) null هست.
مورد دیگه این هست که کاربر ممکنه بعدا اون row رو پاک کنه،
یا مقدار اون سلول مورد نظر رو ویرایش کنه جوری که در شمارش موثر باشه،
که خب با این کد قابل تشخیص نیست.
شما نمیتونین بدون لوپ اینو انجام بدین،
مگر این که در cellbeginedit مقدار سلول رو یه جایی نگهدارین
و در cellendedit مقایسه کنین
و تازه حواستون به nullها هم باشه.
خلاصه این که ساده ترین و مطمئنترین راه همون حلقه ساده است،
کافی هست در رویداد cellvaluechanged و همچنین rowsremoved انجام بشه.