PDA

View Full Version : محاسبه در DataGridView



davidrobert
شنبه 12 اسفند 1396, 09:35 صبح
سلام و خسته نباشید.
بنده در قسمت دیتاگرید ویو محاسبه انجام میدم مشکلی ندارم ولی فط تنها مشکل من این هستش اجناس من داخلش لیتری هم هستش و برنامه برای تعویض روغنی هستش وفتی به 1.2 لیتر میزنم در ستون بعدی باید همین 1.2 قرار بده ولی به جاش رند میکنه و مقدار 1 رو قرار میده و یا موقعی که مقدار 2.5 میدم مقدارش رو گرد میکنه و عدد سه رو میاره ولی در صورتی که من مقدار 2.5 لازم دارم.
147745
این هم دستور محاسبه بنده
var row = dgv1.Rows[e.RowIndex];
decimal BeforTedadKala = decimal.Parse(row.Cells["Clm_TK_TedadKala"].Value.ToString(), NumberStyles.AllowDecimalPoint, CultureInfo.GetCultureInfo("en-US"));
decimal TedadKala = decimal.Parse(row.Cells["Clm_Tedad_Kala"].Value.ToString(), NumberStyles.AllowDecimalPoint, CultureInfo.GetCultureInfo("en-US"));
decimal TedadKalaKol = (BeforTedadKala + TedadKala);
//این دستور مورد نظر برای محاسبه تعداد کالا هستش
row.Cells["Clm_Tedad_Kol_Kala"].Value = Math.Round((decimal)TedadKalaKol, 1);

decimal GhemetKala = decimal.Parse(row.Cells["Clm_KH_Gheme_Kala"].Value.ToString(), NumberStyles.AllowDecimalPoint, CultureInfo.GetCultureInfo("en-US"));
decimal GhemetKol = TedadKala * GhemetKala;
row.Cells["Clm_KH_Ghemet_Kol_Kala"].Value = Math.Round(GhemetKol, 1);

decimal DarsadTakhFef = decimal.Parse(row.Cells["Clm_KH_Darsd_Takhfef"].Value.ToString(), NumberStyles.Currency, CultureInfo.GetCultureInfo("en-US"));
decimal MablagTekhfef = (DarsadTakhFef * GhemetKol) / 100;
row.Cells["Clm_KH_Mablag_Darsad"].Value = Math.Round(MablagTekhfef, 0);

decimal MablagTekhfefKol = (GhemetKol - MablagTekhfef);
row.Cells["Clm_KH_Mablag_Kol_Darsad"].Value = Math.Round(MablagTekhfefKol, 0);

decimal DarsadMaleyat = decimal.Parse(row.Cells["Clm_KH_Darsad_Maleyat"].Value.ToString(), NumberStyles.Currency, CultureInfo.GetCultureInfo("en-US"));
decimal MablagMaleyat = (DarsadMaleyat * GhemetKol) / 100;
row.Cells["Clm_KH_Mablag_Maleyat"].Value = Math.Round(MablagMaleyat, 0);

decimal MablagMaleyatKol = (GhemetKol + MablagMaleyat);
row.Cells["Clm_KH_Mablag_Kol_Maleyat"].Value = Math.Round(MablagMaleyatKol, 0);

decimal MablagGabelPerdakht = (GhemetKol + MablagMaleyat - MablagTekhfef);
row.Cells["Clm_KH_Mablag_Gabel_Perdakht"].Value = Math.Round(MablagGabelPerdakht, 0);


فقط ماندمچطور جلو اینکه عدد گرد نکنه رو بگیرم ماندم و کلی گشتم و تست گرفتم هیچ دستوری جواب نداده تو حساب کتاب ضرب درست عمل میکنه مشکلی ندارم ولی هنگام جمع تعداد کالا قدیم با تعداد کالا جدید درست هستش ولی مقدار گرد کردنش درد سر آور چون اجناس لیتری هستن نباید گرد بیشه

ژیار رحیمی
شنبه 12 اسفند 1396, 12:30 عصر
سلام
تابع Round رو بردارید ومقدار بدست آمده را بدون رندسازی انتساب دهید و DefaultCellStyle ستون Clm_Tedad_Kol_Kala را مشخص کنید.

dgv1.Columns["Clm_Tedad_Kol_Kala"].DefaultCellStyle = new DataGridViewCellStyle { Format = "N1", NullValue = null };