بدست آوردن ضرب و جمع مقادیر هر سطر و ستون از دیتاگرید ویو با رفتن به سطر بعدی !
سلام به همه ...
چطور میشه حاصل ضرب تو سلول (از یک سطر) رو در سلول بعدی ریخت !
و اگر کاربر یک سطر دیگر را پر کرد ، ارقام ستون آخر (حاصلضرب) رو جمع کرد ؟
مثل این عکس :
http://s4.picofile.com/file/8180311542/DGVfactor.png
البته نمیخوام با زدن دکمه یا چیز دیگه باشه ! هر سطر که پر شد جمع توی تکست باکس ریخته بشه !
نقل قول: بدست آوردن ضرب و جمع مقادیر هر سطر و ستون از دیتاگرید ویو با رفتن به سطر بعدی !
شما باید در رویداد CellEndEdit کدهای محاسباتیتو بنویسی
کد نمونه این میشه:
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
dataGridView1.Rows[e.RowIndex].Cells[2].Value=Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[0].Value)*Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[1].Value);
int sum=0;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
sum += (int)dataGridView1.Rows[i].Cells[2].Value;
payableTextBox.Text=sum.ToString();
}
در مثال بالا برای گرید سه ستون فرض شده با تغییر عدد در ستون اول یا دوم حاصل ضرب در ستون سوم و مجموع ستون سوم در TextBox نمایش داده می شود.
باید ستون سوم رو به دلیل اینکه مقدارش نتیجه محاسبه هست در حالت ReadOnly قرار بدی
نقل قول: بدست آوردن ضرب و جمع مقادیر هر سطر و ستون از دیتاگرید ویو با رفتن به سطر بعدی !
ممنون !
من تو اینا زدم ولی خطا میداد :
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) {
}
private void dataGridView1_Leave(object sender, EventArgs e)
{
}
بازم ممنون ...
نقل قول:
باید ستون سوم رو به دلیل اینکه مقدارش نتیجه محاسبه هست در حالت ReadOnly قرار بدی
چطوری ؟
و اگه اون دو تا ستون اول رو اضافه کنم که نمی ریزه به هم ؟
1 ضمیمه
نقل قول: بدست آوردن ضرب و جمع مقادیر هر سطر و ستون از دیتاگرید ویو با رفتن به سطر بعدی !
کدم اینه : (تو متود واسه لود فرم)
var dt = new DataTable(); dt.Columns.Add("Price", typeof(int));
dt.Columns.Add("Quantity", typeof(int));
dt.Columns.Add("Kol", typeof(int));
dataGridView1.DataSource = dt;
dataGridView1.Columns[0].HeaderText = "قیمت";
dataGridView1.Columns[1].HeaderText = "تعداد";
dataGridView1.Columns[2].HeaderText = "کل";
این خطا رو میده :
نقل قول: بدست آوردن ضرب و جمع مقادیر هر سطر و ستون از دیتاگرید ویو با رفتن به سطر بعدی !
Event اول به نظر من مناسب کار شما نیست چون در زمان کلیک روی Cell فرا خوانی میشه حالا ممکنه کاربر به جای کلیک با Enter بره قسمت بعدی که باعث میشه کدهای شما اجرا نشه
Event دوم خوبه فقط یک عیب داده هروقت کاربر یکی از Cell هارو انتخاب میکنه و ازش عبور میکنه چه با Enter چه با Click کدهای محاسباتی شما اجرا میشه حتی اگر مقادیر تغییر نکرده باشن و در این حالت اگر داده ها زیاد باشن و زمان محاسبه طولانی باشه کاربر اذیت میشه
بهترین رویداد CellValueChanged هست که فقط اگر مقدار تغییر کنه کد اجرا میشه
تعداد و ترتیب ستون ها کاملاً در اختیار خودتون هست برنامه نمونه ضمیمه هست که برای دسترسی به ستون ها از شماره ترتیب قرار گیریشون استفاده شده.
تر تمیز ترش اینه که شما برای هر ستونت یک اسم مربوط انتخاب کنی و برای دسترسی از اون اسم استفاده کنی اینطوری با تغییر ترتیب ستون ها مشکلی برای کدت پیش نمیاد
برای انتخاب اسم و همچنین ReadOnly کردن در حالت Design Mode وقتی گریدت در حالت Select باشه در قسمت بالا سمت راست یک فلش ریز نشون داده میشه که با کلیک روی اون میتونی به منوی مدیریت ستون ها دسترسی داشته باشی
از این منو گزینه Edit Columns رو انتخاب کن و تغییرات دلخواه رو بده
برنامه نمونه ضمیمه است
نقل قول: بدست آوردن ضرب و جمع مقادیر هر سطر و ستون از دیتاگرید ویو با رفتن به سطر بعدی !
الان فقط یه مشکل هست ...
جمع ستون سوم درست نیست ! همیشه بیشتر از حاصل جمعه !؟
نقل قول: بدست آوردن ضرب و جمع مقادیر هر سطر و ستون از دیتاگرید ویو با رفتن به سطر بعدی !
ببخشید اشتباه کد من بود حلقه for محاسبه جمع رو تغییر بده به
for (int i = 0; i < dataGridView1.Rows.Count; i++)
sum += (int)dataGridView1.Rows[i].Cells[2].Value;
نقل قول: بدست آوردن ضرب و جمع مقادیر هر سطر و ستون از دیتاگرید ویو با رفتن به سطر بعدی !
باز خطا داد ...
البته من دیتاگرید رو خالی میزارم ها ! (مقدار اولیه صفر بش نمیدم)
نقل قول: بدست آوردن ضرب و جمع مقادیر هر سطر و ستون از دیتاگرید ویو با رفتن به سطر بعدی !
توی برنامه نمونه مقادیر اولیه رو خالی کردم و مشکلی پیش نیومد
در مد Debug برنامه را اجرا کنید و خطایی که بهتون میده رو بفرمایید.
امیدوارم بتونم کمک کنم
1 ضمیمه
نقل قول: بدست آوردن ضرب و جمع مقادیر هر سطر و ستون از دیتاگرید ویو با رفتن به سطر بعدی !
وقتی سلول اولی رو پر میکنم و میخوام برم به سلول بعدی (با کلید جهت نما ، اینتر و ...) خطا میده
این عکس خطا :
نقل قول: بدست آوردن ضرب و جمع مقادیر هر سطر و ستون از دیتاگرید ویو با رفتن به سطر بعدی !
خط
sum += (int)dataGridView1.Rows[i].Cells[2].Value;
تبدیل کن به
sum += dataGridView1.Rows[i].Cells[2].Value == null ? 0 : Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value);
نقل قول: بدست آوردن ضرب و جمع مقادیر هر سطر و ستون از دیتاگرید ویو با رفتن به سطر بعدی !
ایول ... درست شد !
اون علامت سوال دقیقا چیکار میکنه ؟ میگه اگه خالی بود ، برابر صفر کن
نقل قول: بدست آوردن ضرب و جمع مقادیر هر سطر و ستون از دیتاگرید ویو با رفتن به سطر بعدی !
اون علامت سوال شرط قبلشو تست میکنه اگر شرط درست بود عبارت بعد از علامت سوال اگرنه عبارت بعد از دو نقطه رو بر میگردونه