PDA

View Full Version : قرار دادن اعشار قیمت برای textbox



pure_love
چهارشنبه 01 آذر 1396, 17:32 عصر
سلام بچه ها
من یه برنامه حسابداری نوشتم ! در قسمت قیمت میخام وقتی قیمت وارد میکنه سه رقم سه رقم جداش کنه.(مثلا به جای 3000 بشه 3.000 )
یعنی به وسیله اعشاری یا چیزی جدا بشن.
با کد زیر اینکار انجام دادم :


if (textBox7.Text == "" || textBox7.Text == "0") return;
decimal price;
price = decimal.Parse(textBox7.Text, System.Globalization.NumberStyles.Currency);
textBox7.Text = price.ToString("#,#");
textBox7.SelectionStart = textBox7.Text.Length;


ثبت دیتابیس هم میشه ! ولی چندتا مشکل دارم !
یکی اینکه تو فرم دیگه برنامم میخام مقدار ها رو جمع کنم! کد های جمع هم اینه :


int sum = new int();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
sum += Convert.ToInt32(row.Cells[4].Value);
}
textBox4.Text = sum.ToString();


اگه قیمت ها بدون اعشار باشن جمع میکنه ولی وقتی با اعشاری یا نقطه ای قیمت ها رو جدا میکنم نمیتونه جمعشون کنه ! انگار نمیتونه بخونتش جمعش کنه !
و دوم اینکه تو گزارش گیری هم قیمت با اعشار نمیاره !

این دوتا مشکل دارم ! بهم گفتن باید جوری کد بنویسی که فقط از دید کاربر تو تکست باکس اعشار بخوره و وقتی ثبت دیتابیس میشه بدون اعشار باشه!

لطفا راهنمایی کنید چیکار کنم چه کدی بنویسم ؟
تشکر

ژیار رحیمی
پنج شنبه 02 آذر 1396, 11:30 صبح
سلام
موقع خوندن سلول های دیتاگرید باید کاما های درج شده در متن را حذف کنی بعد تبدیل به عدد شود.

sum += Convert.ToInt32(row.Cells[4].Value.ToString().Replace(",",""));

pure_love
پنج شنبه 02 آذر 1396, 15:24 عصر
سلام
موقع خوندن سلول های دیتاگرید باید کاما های درج شده در متن را حذف کنی بعد تبدیل به عدد شود.

sum += Convert.ToInt32(row.Cells[4].Value.ToString().Replace(",",""));


این پیغام میده :
Object reference not set to an instance of an object.
لطفا بگید چیکار کنم ؟

رامین مرادی
پنج شنبه 02 آذر 1396, 15:40 عصر
این پیغام میده :
Object reference not set to an instance of an object.
لطفا بگید چیکار کنم ؟
بجای 4 نام فیلدتون رو داخل دابل کوتیشن بنویسید. "Price"

ژیار رحیمی
پنج شنبه 02 آذر 1396, 15:46 عصر
حلقه foreach بصورت for بنویس .بعد مطمئنی ستون پنجم در دیتاگرید همان ستون اعداد هست؟

for (var r=0;r< dataGridView1.Rows.Count;r++)
{
sum += Convert.ToInt32(dataGridView1.Rows[r].Cells[4].Value);
}