用DataTable实现了对DataGridView列求和

bulls5988 2011-06-07 07:43:54
虽然代码很丑,可能有BUG。但是是研究2、3天才解决的。希望对需要的朋友有参考。其他老大不用理我呀。
我禁用了点击排序和用户行自动添加。ArrowUserToAddRow为false。
代码实现了在头列前插入一列"自动编号"列,在最后一行实现了列统计功能。在最后一行第1列显示“合计”字样。


       
//连接SQL数据库的类,也可以直接用字符串连接
fee_conn fee_conn = new fee_conn();

//
private SqlDataAdapter find_do;
private DataSet ds;
string sql_str = "";

sql_str = "select car_fee_id as 交易流水号 ,car_fee_nums as 会员卡号,car_fee_start as 停车时间,car_fee_end as 离开时间,car_fee_must_money as 应收费,car_fee_all_money as 实收费,car_fee_times as 停车时长,car_fee_free_money as 免除,car_fee_sd_money as 水单减免,car_fee_car_id as 车牌号,car_fee_user as 收费人,(case car_fee_flag when 1 then '停车中' when 2 then '已离开' end) as 卡状态 ,(case car_fee_card_type when 0 then '临时卡' when 4 then '会员卡' when 12 then '金卡' when 72 then '内部员工卡' when 5 then '宝宝卡' end) as 卡类别,car_fee_c_nums as 换卡号,(case car_fee_c_card_type when 0 then '临时卡' when 4 then '会员卡' when 12 then '金卡' when 72 then '内部员工卡' when 5 then '宝宝卡' end) as 换卡类别,car_fee_recepice_start as 收据起始号,car_fee_recepice_end as 收据结束号,car_fee_remark as 备注,car_fee_mmc as 使用中影卡,(case car_fee_night when 0 then '正常停车' when 1 then '夜间停车' end) as 停车类型 from car_park_fee where car_fee_start between '" + d_start + "'and '" + d_end + "' and car_fee_flag = 2 order by car_fee_id desc";

SqlConnection conn = new SqlConnection(fee_conn.sql_conn());
SqlCommand cmd = new SqlCommand(sql_str, conn);
find_do = new SqlDataAdapter();
find_do.SelectCommand = cmd;
ds = new DataSet();
find_do.Fill(ds,"rs");
try
{
//实现最后一列求合计
DataTable dataTable = ds.Tables["rs"];
DataRow dataRows;
dataRows = dataTable.NewRow();
dataRows[4] = dataTable.Compute("Sum(应收费)", "true");
dataRows[5] = dataTable.Compute("Sum(实收费)", "true");
dataRows[6] = dataTable.Compute("Sum(停车时长)", "true");
dataRows[7] = dataTable.Compute("Sum(免除)", "true");
dataRows[8] = dataTable.Compute("Sum(水单减免)", "true");
dataTable.Rows.Add(dataRows);

//第一列插入“自动编号列”
ds.Tables[0].Columns.Add("编号");
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (i < ds.Tables[0].Rows.Count -1)
{
ds.Tables[0].Rows[i]["编号"] = i + 1;
}
else
{
ds.Tables[0].Rows[i]["编号"]= "合计";
}
}

ds.Tables[0].Columns["编号"].SetOrdinal(0);
d_report.DataSource = dataTable;
}
catch (System.Exception sqler)
{
MessageBox.Show("错误!", sqler.Message);
return;
}

//禁止了点击排序功能
for (int k = 0; k < d_report.Columns.Count - 1; k++)
{
d_report.Columns[k].SortMode = DataGridViewColumnSortMode.NotSortable;
}

...全文
356 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinzhuduan 2011-06-08
  • 打赏
  • 举报
回复
这额查询语句....
leiziaitudou 2011-06-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dongxinxi 的回复:]
效率问题你可有考虑过?用SQL就可以简单解决的问题
[/Quote]
..............
  • 打赏
  • 举报
回复
真有点晕
  • 打赏
  • 举报
回复
效率问题你可有考虑过?用SQL就可以简单解决的问题
renyiqiu 2011-06-07
  • 打赏
  • 举报
回复
有点晕

110,538

社区成员

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

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

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