PDA

View Full Version : سوال: نحوه محاسبه در ديتاگريد



juza66
یک شنبه 13 مرداد 1392, 19:26 عصر
سلام دوستان

چطور ميشه يه محاسبه رو در ديتاگريد انجام داد؟

مثال: سلول 1 ضربدر سلول 2 = سلول 3

عكس زير رو ببينيد
108515


من تونستم دوتا سلول را ضرب كنم و در سلول سوم نمايش بدم ولي نميدونم كجاي Event يا عمل ديتاگريد قرار بدم كه در سطر بعد اعمال نشود؟

اينم دستور من براي اينكار (دستورات بدرستي انجام ميشه بدون هيچ مشكلي تنها مشكل من نشان ندادن ضرب در سطر بعد هستش لطفا اگر دوستاني اينكار رو انجام دادن كمكي بكنند ممنون ميشم)



try
{
double Fei = default(double);
double Tedad = default(double);
for (var i = 0; i <= DWG.RowCount - 2; i++)
{
Fei += Convert.ToDouble(DWG["Fei", Convert.ToInt32(i)].Value);
Tedad += Convert.ToDouble(DWG["Tedad", Convert.ToInt32(i)].Value);
}
inttext.Text = (Convert.ToInt32(Fei.ToString()) * Convert.ToInt32(Tedad.ToString())).ToString();
}
catch (Exception ex)
{
MessageBox.Show(@"لطفا عدد وارد کنید", @"خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
}



private void DGW_CellLeave(object sender, DataGridViewCellEventArgs e)
{
DWG[5, e.RowIndex].Value = inttext.Text;
}

ordebehesht
یک شنبه 13 مرداد 1392, 19:40 عصر
باید براش بگی که جواب رو تو همون سطر تو سلول سوم بنویسه

juza66
یک شنبه 13 مرداد 1392, 19:52 عصر
ممنون دوست عزيز، نظر شما درست ولي چطور؟

اگر منظور شما استفاده از شرط هستش من چندين بار تلاش كردم نشد كه نشد!!

اگر شما ميتونيد اينكار رو انجام بديد لطفاً اين شرط رو براي بنده بنويسيد ممنون ميشم..

khokhan
یک شنبه 13 مرداد 1392, 22:31 عصر
اگه فقط سطر خاصی مد نظرت هست بهتره اندیس اون سطر رو بدی و این کدها رو دررویداد DataSourceChanged دیتا گرید قرار بدی



object a = dataGridView1.Rows[0].Cells["price"].Value;
object b = dataGridView1.Rows[0].Cells["tedad"].Value;
double aNumber = 0;
double bNumber = 0;
if (a != null)
aNumber = Double.Parse(a.ToString());
if (b != null)
bNumber = Double.Parse(b.ToString());
dataGridView1.Rows[0].Cells["total_price"].Value = aNumber * bNumber;

juza66
دوشنبه 14 مرداد 1392, 00:49 صبح
ممنون دوست عزیز
ولی من سطر خاصی در نظر ندارم همانطور که تویی عکس پیداست من سلول به سلول می خواهم تا بی نهایت بتونم این ضرب کردن ها رو هم در سطرهای دیگه هم داشته باشم. ممنون از راهنمایت اگر راحل دبگه ای داری مننون میشم کمکم کنید..

khokhan
دوشنبه 14 مرداد 1392, 00:53 صبح
ممنون دوست عزیز
ولی من سطر خاصی در نظر ندارم همانطور که تویی عکس پیداست من سلول به سلول می خواهم تا بی نهایت بتونم این ضرب کردن ها رو هم در سطرهای دیگه هم داشته باشم. ممنون از راهنمایت اگر راحل دبگه ای داری مننون میشم کمکم کنید..
در اینصورت یه حلقه به اولش اضافه کنی این عمل رو روی تمام سطر ها اعمال می کنه :


for (int i = 0; i < dataGridView1.Rows.Count; ++i)
{

object a = dataGridView1.Rows[i].Cells["price"].Value;
object b = dataGridView1.Rows[i].Cells["tedad"].Value;
double aNumber = 0;
double bNumber = 0;
if (a != null)
aNumber = Double.Parse(a.ToString());
if (b != null)
bNumber = Double.Parse(b.ToString());
dataGridView1.Rows[i].Cells["total_price"].Value = aNumber * bNumber;
}

juza66
دوشنبه 14 مرداد 1392, 08:57 صبح
ممنون دوستان


كد شما دوست عزيز هم درست و بجا بود و از دستورنويسي من بهتر بود


ولي با اين راه حل هم ميشه و لقمه چرخوندن دور سره :قهقهه:


راه حلش اين بود كه بعد از ضرب در سلول آخر inttext.text را ()Clear كنم كه اصلاً پيشنهاد نميكنم