报表之惑----C#如何添加合计行?
来源:互联网 发布:bt下载软件 编辑:程序博客网 时间:2024/06/05 02:55
“众里寻她千百度,蓦然回首,那人却在,灯火阑珊处。”词虽好,但现实比非如此,最近做项目也是碰到了头疼的事,虽然网上关于报表添加总计行的方法很多,但总是让人不知所云,所以自己尝试下这篇博客,我的方法是在DataGridview最后一行添加“合计”行,并保证最后一行不参与排序。
思想:”程序的方法固然重要,但思想是前提“,之前尝试直接在Datagridview添加合计行,发现总是行不通,所有打算直接在绑定数据源时添加。
首先:这是在datagridview中添加行,必备工具我这里不废话(Form,DataGridview控件,DataGridview各字段绑定数据源)。
第一步:右击Form—-查看代码—-添加方法
private void AddTotalRow(DataGridView dg) { MySQLHelper dbHelper = new MySQLHelper();//这里我直接用封装的类库,需要这个的可以发邮件给我liucheng.chn@foxmail.com dbHelper.creatCommand("SQL语句");//关于C#如何操作数据库和绑定数据源,相信应该都会吧,有疑问的可以发邮件给我 DataTable addTotalRow = dbHelper.executeQuery(); //执行SQL语句 //计算总输入 Decimal totalCost = 0; DataRow newRow = addTotalRow.NewRow(); for (int i = 0; i < addTotalRow.Rows.Count; i++) { totalCost += Convert.ToDecimal(addTotalRow.Rows[i][14].ToString());//这里14代表我的表格中第14列是价格,这个没有统一标准 } newRow["cost"] = totalCost;//cost是Datatable的字段,表示在cost这个字段添加一个为totalCost的数据 newRow["id"] = "合计:"+ totalCost;//在Datatable中id这个字段添加"合计"和totalCost,这里需说明下,合计这个属性的位置按照个人需求添加,我是在id行添加 addTotalRow.Rows.Add(newRow);//把新创建的"合计"行添加到Datatable中 dataGridViewAddTotalRow.DataSource = addTotalRow; KeepYellow(dataGridViewAddTotalRow); }
第二步:使最后一行保持颜色不变
/** *使最后一行保持黄色,颜色按个人喜好设置(这里不表示我喜欢"黄色",各位别多想) */ private void KeepYellow(DataGridView dg) { DataGridViewRow keepYellow = dg.Rows[dg.Rows.Count - 1];//取出最后一行 keepYellow.ReadOnly = true;//设置此行不可编辑 keepYellow.DefaultCellStyle.BackColor = System.Drawing.Color.Yellow;//设置行颜色为黄色 }
第三步:使最后一行不参与排序,需要添加两个事件,CellMouseClick事件和Sorted时间(方法双击事件,自动添加)
/** *功能:最后一行不参与排序 *日期:2015/3/14 */ List<object[]> dataExceptLastRow = new List<object[]>();//List集合存储最后一行 int currentColumnIndex = 0;//保存当前行的索引 private void dataGridViewAddTotalRow_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) { if (e.RowIndex >= 0 || dataGridViewAddTotalRow.Rows.Count == 0) return; if (dataExceptLastRow.Count == 0) { currentColumnIndex = e.ColumnIndex;//将当前列赋值给colindex int index = dataGridViewAddTotalRow.Rows.Count - 1; //排除最后一行 dataExceptLastRow.Add(((DataTable)dataGridViewAddTotalRow.DataSource).Rows[index].ItemArray);//将DataTable中所有值添加到List数组,除最后一行(总计行) dataGridViewAddTotalRow.Rows.Remove(dataGridViewAddTotalRow.Rows[dataGridViewAddTotalRow.Rows.Count - 1]);//从DataTable中输出最后一行(总计行) AddTotalRow(dataGridViewAddTotalRow); } } private void dataGridViewAddTotalRow_CellSorted(object sender, EventArgs e) { if (dataExceptLastRow.Count == 0) return; DataTable dt = ((DataTable)dataGridViewAddTotalRow.DataSource);//重新绑定数据源 DataView dv = dt.DefaultView;//因为DataTable没有排序的功能,所有转换成DataView dv.Sort = dt.Columns[currentColumnIndex].ColumnName; dt = dv.ToTable();//转换成DataTable类型 dt.Rows.Add(dataExceptLastRow[0]); dataExceptLastRow.Clear(); dataGridViewAddTotalRow.DataSource = dt; AddTotalRow(dataGridViewAddTotalRow); }
最后,请多多指教!谢谢!
0 0
- 报表之惑----C#如何添加合计行?
- EAS BOS 报表添加合计行,和每行合计
- C# DataGridView添加合计行
- C# DataGridView添加合计行
- c# DataGridView添加合计行的例子
- 添加合计行
- datagrid中添加合计行计算合计
- c# listview 添加合计记录条
- GridView添加统计(合计)行
- GridView添加统计(合计)行
- datagridview中添加合计行
- GridView添加统计(合计)行
- DataGridView底部添加合计行
- GridView添加统计(合计)行
- GridView添加统计(合计)行
- GridView添加统计(合计)行
- GridView添加统计(合计)行
- Jqgrid之合计行
- Kinect开发笔记之五使用PowerShell控制Kinect
- android笔记(基础补充)『个人笔记!非教程!慎入』
- ios签名原理的简单理解
- BZOJ 3622 已经没有什么好害怕的了 动态规划+容斥原理
- 了解云计算六(分布式服务部署)
- 报表之惑----C#如何添加合计行?
- jquery mobile 页面
- 【JavaScript】下拉列表select中在value传递多个值,取出其option显示值,并应用此作为导航
- C++中的动态内存与智能指针
- 关于javaweb流量统计软件的分
- MATLAB中如何用循环实现精确延时
- Java基础第九天案例--登陆注册案例(2)
- 欢迎使用CSDN-markdown编辑器
- 【javascript】 借助script元素发送HTTP请求:JSONP原理-2