Winform DataGridVIew合计功能?

liuping234232783 2009-03-18 03:26:48
DataGridViewRow dgr =dataGridView1.Rows[dataGridView1.Rows.Count-1];

dgr.ReadOnly = true;

dgr.DefaultCellStyle.BackColor = System.Drawing.Color.Khaki;

dgr.Cells[0].Value = "合计";
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{

dgr.Cells[3].Value = Convert.ToInt32(dgr.Cells[3].Value) + Convert.ToInt32(dataGridView1.Rows[i].Cells[3].Value);

dgr.Cells[2].Value = Convert.ToInt32(dgr.Cells[2].Value) + Convert.ToInt32(dataGridView1.Rows[i].Cells[2].Value);

int ss = Convert.ToInt32(dgr.Cells[3].Value);

int aa = Convert.ToInt32(dgr.Cells[2].Value);

dgr.Cells[1].Value = Convert.ToInt32(ss - aa);
}

合计这行怎么一点击就没了? 上面代码写的form_load事件里!!怎么改才能保证合计这行不消失~!
把 DataGridViewRow dgr =dataGridView1.Rows[dataGridView1.Rows.Count-1];改成 DataGridViewRow dgr =dataGridView1.Rows[dataGridView1.Rows.Count-2];但把最后条数据给覆盖了!!请问解决方法!!谢谢大虾!!
...全文
398 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
lex__ 2009-03-20
  • 打赏
  • 举报
回复
那我问一下!!
如果要保存的话
怎么办!!
数据库的那张表不是有合计这一列了!
深海之蓝 2009-03-19
  • 打赏
  • 举报
回复
哦 上边是
this.dataGridView1.Rows[/*索引*/].DefaultCellStyle.ForeColor = Color.Green;
深海之蓝 2009-03-19
  • 打赏
  • 举报
回复
如果要改 字的颜色 就是
this.dataGridView1.Rows[].DefaultCellStyle.ForeColor = Color.Green;
深海之蓝 2009-03-19
  • 打赏
  • 举报
回复
this.dataGridView1.Rows[/*索引*/].DefaultCellStyle.BackColor = Color.Green;
liuping234232783 2009-03-19
  • 打赏
  • 举报
回复
10楼 14楼怎么在增加的行添加颜色..是Winform程序!
深海之蓝 2009-03-18
  • 打赏
  • 举报
回复
你原来的代码也无非是想做这些,只不过,你是想在datagridview里边加一列数据,而我直接在datatable中加了
深海之蓝 2009-03-18
  • 打赏
  • 举报
回复
如果你的操作是查询数据库得出结果集,然后要在结果后加一列统计的话,直接用我的就可以了
homejiji 2009-03-18
  • 打赏
  • 举报
回复
又可以复制以前的代码回答问题了。。我真是无耻。

DataTable.Compute 方法 计算用来传递筛选条件的当前行上的给定表达式

public Object Compute (
string expression,
string filter
)
实例:
string sConnectionString; //声明一个字符串
//连接数据库字符串,连接到XBMIS数据库,用户名是sa
sConnectionString = " Data Source=.;Initial Catalog=XBMIS;User ID=sa; ";
//创建SqlConnection数据库连接对象
SqlConnection Conn = new SqlConnection(sConnectionString);
//打开Conn
Conn.Open();
//sql语句把T_YongH表中的数据信息都取出来
string commandString = "Select BianH AS 编号,ZhuCYHM AS 注册名,XingM AS 姓名,XingB AS 性别 From T_YongH";
SqlDataAdapter dataAdapter = new SqlDataAdapter(commandString, Conn);
ds_datatable ds = new ds_datatable();
//填充数据集
dataAdapter.Fill(ds, "YongH");
//填充数据表
DataTable dataTable = ds.Tables["YongH"];
//创建一个新行并添加到dataTable数据表中
DataRow dataRow;
dataRow = dataTable.NewRow();
//使用Sum含数计算编号的总和,使用Count函数计算编号的个数
dataRow[0] = dataTable.Compute("Sum(编号)", "true");
dataRow[1] = dataTable.Compute("Count(编号)", "");
//把数据行添加到YongHTable数据表中
dataTable.Rows.Add(dataRow);
GridView1.DataSource = dataTable;
GridView1.DataBind();

参数说明:

expression 参数需要聚合函数,要计算的表达式字符串,基本上类似于Sql Server中的统计表达式。例如,以下是合法表达式:Count(ID)。

filter:统计的过滤字符串,只有满足这个过滤条件的记录才会被统计,也就是确定在表达式中使用哪些行。


liuping234232783 2009-03-18
  • 打赏
  • 举报
回复
11楼,能帮我在我给的代码上做修改吗!! 谢谢!
typeof 2009-03-18
  • 打赏
  • 举报
回复
up
深海之蓝 2009-03-18
  • 打赏
  • 举报
回复
上面代码经测试 没有问题
深海之蓝 2009-03-18
  • 打赏
  • 举报
回复
string str = "SELECT * from 表 where ...";
OracleDataAdapter da = new OracleDataAdapter(str, oracleconn);
DataSet ds = new DataSet();
da.Fill(ds);
DataTable dt = ds.Tables[0];//现在已经把数据存到datatable中了
int result = 0;
foreach(DataRow dr in dt.Rows)
{
result += int.Parse(dr[/*列索引*/].ToString());
}
//result已经包含了某列的值的合计
//你可以用相同的办法算出所有的列
DataRow dr = dt.NewRow();//创建合计行
dr[0] = "/*你刚取道的合计值*/";
dt.Rows.InsertAt(dr, 0);//第二个参数是索引,看你把取到的值放到什么位置
//自己加个循环,就把所有的值都放进去了
深海之蓝 2009-03-18
  • 打赏
  • 举报
回复
不是让你dataGridView1.Rows.Add();在datagridview中加一行,是让你在datatable中加,你在datagridview中加了一行 ,然后再绑定,当然没效果了
surlew 2009-03-18
  • 打赏
  • 举报
回复
你绑定的datatable加多一行试试
zgke 2009-03-18
  • 打赏
  • 举报
回复
你加到你帮定数据时候哪个TABLE里...任何时候只要回去TABLE 都会给家一行合计..而且TABLE的合计不需要你自己手写循环.
liuping234232783 2009-03-18
  • 打赏
  • 举报
回复
各位给个例子吧!!谢谢.
lxf2000104 2009-03-18
  • 打赏
  • 举报
回复
DataTable等数据源里头增加一行。
surlew 2009-03-18
  • 打赏
  • 举报
回复
你datagridview里面的数据是绑定的?
要是绑定的话加行就不好用了,
liuping234232783 2009-03-18
  • 打赏
  • 举报
回复
在数据绑定之前加了dataGridView1.Rows.Add();代码 可是好象不管用?
深海之蓝 2009-03-18
  • 打赏
  • 举报
回复
如果要加 合计功能的话,推荐的做法是 在取出数据的时候,是放到数据表中的 也就是 datatable中,你在没绑定之前,先对这张表进行操作,
添加一行,这行中的每个列,就是你取出数据的合计,然后再绑定。这样比较简单,而且肯定可行。要是在绑定后 再添加一行,比较麻烦
加载更多回复(1)

111,094

社区成员

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

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

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