PDA

View Full Version : مشکل در جمع زدن مقادیر یک ستون از DataGridview



mohamad2007
جمعه 25 مرداد 1387, 08:32 صبح
با سلا خدمت دوستان
من یک DataGrid دارم که توی اون یک ستون به نام Total دارم. من می خوام وقتی یک ردیف به dg اضافه میشه، مجموع این ستون محاسبه بشه و توی یک textbox قرار بگیره. من برای اینکار کد زیر رو توی رویداد RowsAdded نوشتم ولی نمی دونم چرا همیشه آخرین ردیف(ردیفی که جدیدا اضافه شده) رو حساب نمی کنه!!!


private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
int Count = dataGridView1.Rows.Count;
double Sum = 0;
for(int i=0;i<Count;i++)
Sum += Convert.ToDouble(dataGridView1.Rows[i].Cells["Total"].Value);
txtTotal.Text = Convert.ToString(Sum);
}
آیا کد مشکل داره؟ یا باید این کد رو توی یک رویداد دیگه بنویسم؟
لطفا راهنماییم کنید.
ممنون.

jaza_sa
جمعه 25 مرداد 1387, 09:12 صبح
http://www.barnamenevis.org/forum/showpost.php?p=563282&postcount=5

mohamad2007
جمعه 25 مرداد 1387, 09:52 صبح
با تشکر از دوست عزیزjaza_sa (http://www.barnamenevis.org/forum/member.php?u=45588)
ممنونم
من کد رو به شکل زیر تغییر دادم ولی بازم مشکل قبلی رو داره:عصبانی++:


privatevoid dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
int Count = dataGridView1.Rows.Count;
double Sum = 0;
foreach (DataGridViewRow item in dataGridView1.Rows)
Sum += Convert.ToDouble(item.Cells["Total"].Value);
txtTotal.Text = Convert.ToString(Sum);
}

فکر می کنم باید این کد رو توی یه رویداد دیگه بنویسم ولی نمی دونم کدوم رویداد؟! به نظر من وقتی این رویداد فراخوانی میشه هنوز ردیف جدید به dg اضافه نشده.
خیلی دوست دارم نظر دوستان رو بدونم...
با تشکر

hojjat_gh
جمعه 25 مرداد 1387, 10:53 صبح
با سلام
فکر کنم اگه تو رویداد row_leave یا cell_leave کدرو بنویسی جواب بده.

yasercomeng
شنبه 26 مرداد 1387, 02:24 صبح
نكته ي اين سؤال اينجاست كه <<بعد>> از اينكه شما سطري را به ديتا گريد ويو اظافه مي كنيد ، بايد مقادير را وارد آن كنيد.شما وقتي سطري را اظافه مي كنيد كه مقادير در ستون هاي قرار ندارد كه بخواهيد محاسبه كنيد!!
با اين نكته ي ظريف معلوم مي شود كه شما بايد در رويداد هاي BeginEdit و EndEdit خود عمليات محاسبه را انجام دهيد.
هميشه به نكات ريز اينچنيني توجه داشته باشيد.