PDA

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



sm_1366
چهارشنبه 10 اردیبهشت 1393, 08:29 صبح
من میخوام ستونی از دیتاگرید ویو رو با هم جمع بزنم و بعد از جمع زدن محتواشو تو تکست باکسی نشون بدم
من همین کارو تو رویداد cellendedit نوشتم و برای جمع هر خونه خارج که میشم این اتفاق می افته (مقدارشو جمع میبنده و نشون میده )حالا اگه از آخرین خونه بعده وارد کردن عدد بخوام خارج نشم جمع نمیکنه !!!
رویدادی میخوام که در زمان اجرا و در حین ورود اعداد اینکارو بکنه کسی هست راهنماییم کنه؟.

hamid_hr
چهارشنبه 10 اردیبهشت 1393, 08:53 صبح
سلام
شما تو رویداد EditingControlShowing اینطوری بنویسین

e.Control.TextChanged -= DGridBuy_TextCheng;
e.Control.TextChanged += DGridBuy_TextCheng;


بعد این تابعو باید بنویسین

private void DGridBuy_TextCheng(object sender, EventArgs e)
{
TextBox tb = (TextBox)sender;
}

داخل این تابع کداتونو بنویسین
این دقیقا مثل textchange تکس باکس عمل میکنه و اون tb همون سلول هست که داره ویرایش میشه

sm_1366
چهارشنبه 10 اردیبهشت 1393, 10:51 صبح
اصلا عمل جمع درست کار نمیکنه که
دستورات من اینه

private void DGridBuy_TextCheng(object sender, EventArgs e)
{
DataGridViewSelectedCellCollection ddc = dataGridView1.SelectedCells;
int x = ddc[0].ColumnIndex;
int y = ddc[0].RowIndex;








if (x == 6)
{
TextBox tb = (TextBox)sender;
//best2 = best2 - best7;
bede2 = bede2 + (int.Parse(tb.Text.ToString()));
txtbede.Text = bede2.ToString();
txtbest.Text = best2.ToString();


}}

sm_1366
چهارشنبه 10 اردیبهشت 1393, 10:54 صبح
من دو تا ستون دارم که در زمان اجرا برا هر سطر فقط یکی از اینا میتونه پر یا خالی باشه
بدهکار و بستانکار ...
حالا ستونهای بستانکار و بدهکارارو که جدا باید جمع بزنم هیچ ...
کاری دیگه ای هم که باید انجام بده اینه که هر وقت بستانکاری که قبلا عددد توش بوده صفر شد و بجاش همون سطر بدهکارش مقدار دهی شد اون مقدار از بستانکار کم بشه و دوباره بدهکار جمع بشه

sm_1366
چهارشنبه 10 اردیبهشت 1393, 10:59 صبح
دفعه اول میزنم 12
تو تکست باکس چاپ میشه 13

دفعه دوم میزنم 15
تو تکست باکس میزنه 29

دفعه سوم میزنم 300
تو تکست باکس میزنه 365:گیج::گیج:

sm_1366
شنبه 03 خرداد 1393, 15:12 عصر
آقا ما همچنان اندر خم یک کوچه ایم...
کسی نیست؟

hamid_hr
شنبه 03 خرداد 1393, 16:04 عصر
119437

این همون چیزیه که میخواین فک کنم
فقط توی گرید عدد وارد کنین نتیجه رو ببینین

sm_1366
یک شنبه 04 خرداد 1393, 11:56 صبح
آره دقیقا همونه منتها باید ارتقاش بدم به چند سطر و چند ستون ...
ممنون که بن کارو گفتید
بسیار هم ممنون ..
بازم داداش حمید خودمون

sm_1366
یک شنبه 04 خرداد 1393, 12:03 عصر
واسه دو ستون ...
به هم ریخت ...
کار نکرد ...:گریه::گریه::گریه::افسرده::ا فسرده::گریه:

hamid_hr
یک شنبه 04 خرداد 1393, 12:26 عصر
باید توی رویداد textchange اول معلوم بشه کدوم ستون داره تغیییر میکنه به این صورت


int iCol = dgv1.CurrentCell.ColumnIndex;


بعد foreach رو به این صورت تغییر بدی


foreach (DataGridViewRow item in dgv1.Rows)
{
iRow2++;
if (iRow2 == iRow || item.Cells[iCol].Value == null || string.IsNullOrEmpty(item.Cells[iCol].Value.ToString())) continue;
long.TryParse(item.Cells[iCol].Value.ToString(), out tmp);
i += tmp;
}


همین :لبخند:

sm_1366
یک شنبه 04 خرداد 1393, 12:42 عصر
درست شد
یکدنیا ممنون

sm_1366
یک شنبه 04 خرداد 1393, 12:43 عصر
:لبخند: من یه مدل دیگه درستش کردم...

hamid_hr
یک شنبه 04 خرداد 1393, 12:46 عصر
مدلشو توضیح بده شاید بدرد یه بنده خدایی بخوره

sm_1366
یک شنبه 04 خرداد 1393, 19:04 عصر
یه ایراد...
من دو تا ستونی که دارم در زمان اجرا در یک سطر فقط باید یکی از این دو ستون مقدار داشته باشند یعنی اگر تو یکیش عددی وارد شد همون سطر ستون بعدی باید صفر شه (بحث بدهکار بستانکاریه)
من تو رویدا keypressed هر ستون گفتم که ستون دیگری رو 0 کنه حالا مثلا اگر ستون 0 مقدار 200 رو داره ... همون سطر تو ستون 1 کلیک میکنم عددی وارد میکنم و مقدار ستون 0 میشه 0 اما از جمع کل کم نمیشه دوباره وقتی میام تو اون ستون کلیک میکنم درست میشه ....:افسرده::افسرده::افسرده:

hamid_hr
یک شنبه 04 خرداد 1393, 19:06 عصر
خب وقتی مقدار ستون دیگه رو تغییر دادی یه for بزار و جمع اون ستونو حساب کن و چاپ کن

sm_1366
یک شنبه 04 خرداد 1393, 19:07 عصر
برنامه قبلی که خودم نوشتم هم تا همینجاش اوکی بود اما برا مشاهده نهایی جمع باید کاربر تو دو تا ستون یه کلیک میکرد ... تا درست میشد

برنامه شما مثلا میگه مکاننما تو هر ستونی باشه محتوای اون ستون جمع میشه و برای اعمال جمع ستون دیگه حتما باید روش کلیک کرد ...

sm_1366
یک شنبه 04 خرداد 1393, 19:11 عصر
یعنی وقتی icol=1 علاوه بر جمع محتویات ستون 1 بیام محتویات ستون 0 رو هم جمع بزنم؟؟؟؟ و بالعکس؟؟؟؟؟؟؟؟؟؟؟

hamid_hr
یک شنبه 04 خرداد 1393, 19:13 عصر
یعنی وقتی icol=1 علاوه بر جمع محتویات ستون 1 بیام محتویات ستون 0 رو هم جمع بزنم؟؟؟؟ و بالعکس؟؟؟؟؟؟؟؟؟؟؟
اره فک کنم درست بشه اینطوری

sm_1366
یک شنبه 04 خرداد 1393, 19:18 عصر
میگم من کد رو مثل شما درستش کردم وقتی icol==0 باشه همون مراحلو میاد بعد تهش icol رو برابر 1 میکنم ...
برا زیاد کد نزدن راهی هست که اینبار با icol==1 اجرا رو به ابتدای همون خطی ببرم که واسه icol==0 انجام میداد؟؟

sm_1366
یک شنبه 04 خرداد 1393, 19:21 عصر
یه جچیزی تو مایه های label گذاشتن برا یه خطی تو برنامه منتها نمیدونم تو C# چه جوریه

sm_1366
یک شنبه 04 خرداد 1393, 19:28 عصر
:عصبانی++: ماشاللا چه جمعی میزنه ... آتیش پاره ... 300 + 700 = 6253000 :لبخند::گیج::متفکر::عصبانی++:: صبانی++::عصبانی++::عصبانی++::ع بانی++::عصبانی++:

sm_1366
یک شنبه 04 خرداد 1393, 19:32 عصر
:ناراحت::ناراحت::ناراحت::نار حت::ناراحت:

sm_1366
یک شنبه 04 خرداد 1393, 20:19 عصر
روشی که گفتیو انجام دادم بازم تهش باید کلیک کنی تا درست کار کنه:گیج:

jafarpalideh
دوشنبه 05 خرداد 1393, 08:43 صبح
به این پست یه سر بزن شاید به دردت بخوره
http://barnamenevis.org/showthread.php?452445

sm_1366
دوشنبه 05 خرداد 1393, 10:50 صبح
:عصبانی++: ماشاللا چه جمعی میزنه ... آتیش پاره ... 300 + 700 = 6253000 :لبخند::گیج::متفکر::عصبانی++:: صبانی++::عصبانی++::عصبانی++::ا تباه::اشتباه::عصبانی++:


از خطاهای عدم تمرکزی و عجله ای بود..
به جای rowcount از columnscount استفاده کرده بودم:اشتباه::ناراحت:
درست شد :گیج::گیج:

sm_1366
دوشنبه 05 خرداد 1393, 10:51 صبح
به این پست یه سر بزن شاید به دردت بخوره
http://barnamenevis.org/showthread.php?452445

ممنون برادر جعفر با توجه به تصحیح خطاهای برنامه نویسی ... جواب گرفتم...
دست شمام درد نکنه