C# WINFORM,自动计算 DataGridView 中的金额:数量*单价=金额 我觉得你描述的似乎很模糊,能具体点不,你DATAGRIDVIEW显示的是数据库上的表吗?还是什么的,至少也给个上个图,详细说下。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 金额是只有当单元格离开焦点时才计算,只能这样,你想输入完后立即计算?数量和金额合计不能那样算的,要循环列表之后统计参考http://topic.csdn.net/u/20120201/09/735e5496-dd45-454d-8fec-de391558ef7e.html 代码更正后,但仍是改完数量或单价,当光标离开所修改值的单元格才能得到金额、金额合计、数量合计。感觉就是事件没先对。更正后的代码: private void dgvStock_CellValueChanged(object sender, DataGridViewCellEventArgs e) { if (dgvStock.Rows.Count > 0 && e.RowIndex >= 0) { if (dgvStock.Rows[e.RowIndex].Cells[e.ColumnIndex].OwningColumn.Name == "Price" || dgvStock.Rows[e.RowIndex].Cells[e.ColumnIndex].OwningColumn.Name == "Quantity") { try { dgvStock.Rows[e.RowIndex].Cells["Amount"].Value = Convert.ToDecimal(dgvStock.Rows[e.RowIndex].Cells["Quantity"].Value) * Convert.ToDecimal(dgvStock.Rows[e.RowIndex].Cells["Price"].Value); //txtFNo.Text = dt.Rows.Count.ToString(); } catch { } } decQuantityTotal = 0.00m; decAmountTotal = 0.00m; for (int i = 0; i < dgvStock.Rows.Count; i++) { //统计数量合计 try { decQuantityTotal += Convert.ToDecimal(dgvStock.Rows[i].Cells["Quantity"].Value); } catch { } //统计金额合计 try { decAmountTotal += Convert.ToDecimal(dgvStock.Rows[i].Cells["Amount"].Value); } catch { } } lblQuantityTotal.Text = decQuantityTotal.ToString(); lblAmountTotal.Text = decAmountTotal.ToString(); } } 在sql语句中算不是更好吗 想单元格得到类似TextBox控件的TextChanged事件效果一样,单价或数量的值一改变,立即更改金额的值.而不是离开单元格时才修改金额的值 . 呵呵,前几天也用到类似这样的功能,不过我那个更变态,客户要求公式自定义。我也是在cellchange里处理的,比较卡。后方发现NetAdvantage的控件支持,比较强大。 decimal decQuantityTotal = 0.00m; decimal decAmountTotal = 0.00m;private void dgvStock_CellValueChanged(object sender, DataGridViewCellEventArgs e) { if (dgvStock.Rows.Count > 0 && e.RowIndex >= 0) { if (dgvStock.Rows[e.RowIndex].Cells[e.ColumnIndex].OwningColumn.Name == "Price" || dgvStock.Rows[e.RowIndex].Cells[e.ColumnIndex].OwningColumn.Name == "Quantity") { try { dgvStock.Rows[e.RowIndex].Cells["Amount"].Value = Convert.ToDecimal(dgvStock.Rows[e.RowIndex].Cells["Quantity"].Value) * Convert.ToDecimal(dgvStock.Rows[e.RowIndex].Cells["Price"].Value); //txtFNo.Text = dt.Rows.Count.ToString(); //数量或单价更改后,重新计算 数量合计和金额合计 for (int i = 0; i < dgvStock.Rows.Count; i++) { //统计数量合计 try { decQuantityTotal += Convert.ToDecimal(dgvStock.Rows[i].Cells["Quantity"].Value); } catch { } //统计金额合计 try { decAmountTotal += Convert.ToDecimal(dgvStock.Rows[i].Cells["Price"].Value); } catch { } } lblQuantityTotal.Text = decQuantityTotal.ToString(); lblAmountTotal.Text = decAmountTotal.ToString(); } catch { } } } }修改成这样更好吧,不过还是非常感谢 通过随机数读取内存中的图片 上传,图片显示 怎样把连接数据库的程序转为不用连接的? 操作符重载的问题 一个关于邮件的问题 如何实现通过左键点击rss或者xml连接将文章订阅到新浪点点通?现在很多网站都是按右键,然后在出现的菜单上选择点点通订阅。 XNA入门问题:fbx模型的贴图无法显示? 怎么使用SqlDataAdapter,SqlConnection , SqlCommand类啊???小弟很急啊!!! 请问打印纸横纵的设置和百分比的设置 winform中如何获得textbox的部分字符 求正则表达式 在线等! 请教,如何手动设置从System.Attribute派生类?
数量和金额合计不能那样算的,要循环列表之后统计参考http://topic.csdn.net/u/20120201/09/735e5496-dd45-454d-8fec-de391558ef7e.html
{
if (dgvStock.Rows.Count > 0 && e.RowIndex >= 0)
{
if (dgvStock.Rows[e.RowIndex].Cells[e.ColumnIndex].OwningColumn.Name == "Price" || dgvStock.Rows[e.RowIndex].Cells[e.ColumnIndex].OwningColumn.Name == "Quantity")
{
try
{
dgvStock.Rows[e.RowIndex].Cells["Amount"].Value = Convert.ToDecimal(dgvStock.Rows[e.RowIndex].Cells["Quantity"].Value) * Convert.ToDecimal(dgvStock.Rows[e.RowIndex].Cells["Price"].Value); //txtFNo.Text = dt.Rows.Count.ToString();
}
catch { }
}
decQuantityTotal = 0.00m;
decAmountTotal = 0.00m;
for (int i = 0; i < dgvStock.Rows.Count; i++)
{
//统计数量合计
try
{
decQuantityTotal += Convert.ToDecimal(dgvStock.Rows[i].Cells["Quantity"].Value);
}
catch { }
//统计金额合计
try
{
decAmountTotal += Convert.ToDecimal(dgvStock.Rows[i].Cells["Amount"].Value);
}
catch { }
}
lblQuantityTotal.Text = decQuantityTotal.ToString();
lblAmountTotal.Text = decAmountTotal.ToString();
}
}
decimal decAmountTotal = 0.00m;private void dgvStock_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (dgvStock.Rows.Count > 0 && e.RowIndex >= 0)
{
if (dgvStock.Rows[e.RowIndex].Cells[e.ColumnIndex].OwningColumn.Name == "Price" || dgvStock.Rows[e.RowIndex].Cells[e.ColumnIndex].OwningColumn.Name == "Quantity")
{
try
{
dgvStock.Rows[e.RowIndex].Cells["Amount"].Value = Convert.ToDecimal(dgvStock.Rows[e.RowIndex].Cells["Quantity"].Value) * Convert.ToDecimal(dgvStock.Rows[e.RowIndex].Cells["Price"].Value); //txtFNo.Text = dt.Rows.Count.ToString();
//数量或单价更改后,重新计算 数量合计和金额合计 for (int i = 0; i < dgvStock.Rows.Count; i++)
{
//统计数量合计
try
{
decQuantityTotal += Convert.ToDecimal(dgvStock.Rows[i].Cells["Quantity"].Value);
}
catch { }
//统计金额合计
try
{
decAmountTotal += Convert.ToDecimal(dgvStock.Rows[i].Cells["Price"].Value);
}
catch { }
}
lblQuantityTotal.Text = decQuantityTotal.ToString();
lblAmountTotal.Text = decAmountTotal.ToString();
}
catch { }
}
}
}
修改成这样更好吧,不过还是非常感谢