求一段DataGridView控件中统计合计值的C#代码

xiao_bai 2012-07-20 02:30:46
例如我的DataGridView控件中表的样式如下:
语文 数学 英语 合计
1 张三 90 90 90 270
2 李四 50 50 50 150
3 合计 140 140 140 420
我要做的:
比如修改 张三的语文成绩为 100,则表内容变成如下
语文 数学 英语 合计
1 张三 100 90 90 280
2 李四 50 50 50 150
3 合计 150 140 140 430

请问我在CellValueChanged中如何写代码,或者我应该在哪个事件中写?
谢谢!
...全文
371 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
蝶恋花雨 2012-07-23
  • 打赏
  • 举报
回复
参考 http://blog.csdn.net/21aspnet/article/details/1540301
private double sum = 0;//取指定列的数据和
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{

if (e.Row.RowIndex >= 0)
{
sum += Convert.ToDouble(e.Row.Cells[6].Text);
}
else if (e.Row.RowType == DataControlRowType.Footer)
{
e.Row.Cells[5].Text = "总薪水为:";
e.Row.Cells[6].Text = sum.ToString();
e.Row.Cells[3].Text = "平均薪水为:";
e.Row.Cells[4].Text = ((int)(sum / GridView1.Rows.Count)).ToString();

}
}
}
as667341 2012-07-23
  • 打赏
  • 举报
回复
http://hi.baidu.com/jeryhu20/item/3af5a3163cfa9af2ddeeca33
c2606050113 2012-07-23
  • 打赏
  • 举报
回复
既然都知道
int ColumnNum=e.ColumnIndex
int RowNum=e.RowIndex
为何还要进行遍历,直接对 RowNum行的值 加 然后付给最后一列
对ColumnNum列值相加 付给最后一行不就行了
[Quote=引用 4 楼 的回复:]
行的合计我已写出,请大家指正下,顺求求列的合计代码。
private void dgvJCJ_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
DataGridViewRow currDgvr = this.dgvJCJ.Rows[e.RowIndex];
int rowTotal = 0;
int ……
[/Quote]
xiao_bai 2012-07-23
  • 打赏
  • 举报
回复
没有高手指教吗?
xiao_bai 2012-07-20
  • 打赏
  • 举报
回复
补充说一下,我的应用中不需要连接数据库的表,所有内容是我动态写进去的。
xiao_bai 2012-07-20
  • 打赏
  • 举报
回复
行的合计我已写出,请大家指正下,顺求求列的合计代码
private void dgvJCJ_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
DataGridViewRow currDgvr = this.dgvJCJ.Rows[e.RowIndex];
int rowTotal = 0;
int currNum = 0;
foreach (DataGridViewColumn col in this.dgvJCJ.Columns)
{
if (col.Index == 0 || col.Index < this.dgvJCJ.Columns.Count - 1)
{

continue;
}
try
{
for (int irow = 1; irow < this.dgvJCJ.Columns.Count-1; irow++)
{
currNum += int.Parse(currDgvr.Cells[irow].Value.ToString());
}
}
catch
{
}
rowTotal = currNum
currDgvr.Cells[this.dgvJCJ.Columns.Count - 1].Value = rowTotal.ToString();
shizhu820228 2012-07-20
  • 打赏
  • 举报
回复
cellendedit吧,写完,重新绑定一下。
ccbphi 2012-07-20
  • 打赏
  • 举报
回复
http://hi.baidu.com/jeryhu20/item/3af5a3163cfa9af2ddeeca33
xiao_bai 2012-07-20
  • 打赏
  • 举报
回复
这个问题很难吗?分不够可再加
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // TODO: 这行代码将数据加载到表“sepaDB_SysDataSet.TrueNewChem”。您可以根据需要移动或移除它。 this.trueNewChemTableAdapter.Fill(this.sepaDB_SysDataSet.TrueNewChem); DataRow dr = this.sepaDB_SysDataSet.TrueNewChem.NewRow(); object objSum = this.sepaDB_SysDataSet.TrueNewChem.Compute("Sum(count)", null); dr["count"] = objSum.ToString(); dr["F单位名称"] = "合计:"; this.sepaDB_SysDataSet.TrueNewChem.Rows.Add(dr); trueNewChemBindingSource.Sort = "count desc"; } private void trueNewChemDataGridView_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e) { if (e.RowIndex >= trueNewChemDataGridView.Rows.Count - 1) return; DataGridViewRow dgr = trueNewChemDataGridView.Rows[e.RowIndex]; try { //dgr.Cells[0]是当前性别列的索引,用以确定判断哪一列的 if (dgr.Cells[0].Value.ToString() == "合计:") { //定义画笔,使用颜色是深灰。 using (SolidBrush brush = new SolidBrush(Color.Red )) { //利用画笔填充当前行 e.Graphics.FillRectangle(brush, e.RowBounds); //将重新写回当前行。 e.PaintCellsContent(e.ClipBounds); e.Handled = true; } } } catch (Exception ex) { MessageBox.Show(ex.Message); } } } }

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧