datagridview涉及计算问题
2012-05-06 20:39
176 查看
1.
string sql_select = "select C_Name,sum(C_ShouRu) as sr,sum(C_ZhiChu) as zc,sum(C_Jieyu) as jy from t_szk_a where C_Date between #" + dtp_start.Text + "# and #" + dtp_end.Text + "# group by C_Name";
DataTable dt = DB_DataGridView.DGV_source(sql_select); //调用执行sql,返回一个DataTable
double sumshouru = 0; //总收入
double sumzhichu = 0; //总支出
double sumjieyu = 0; //总结余
double temp_percent = 0;
//计算总收入、总支出、总结余
for (int i = 0; i < dt.Rows.Count; i++)
{
sumshouru += Convert.ToDouble(dt.Rows[i]["sr"]);
sumzhichu += Convert.ToDouble(dt.Rows[i]["zc"]);
sumjieyu += Convert.ToDouble(dt.Rows[i]["jy"]);
}
dt.Columns.Add(new DataColumn("sr_per")); //增加收入百分比列
for (int j = 0; j < dt.Rows.Count; j++)
{
temp_percent = Convert.ToDouble(dt.Rows[j]["sr"]) / sumshouru;
dt.Rows[j]["sr_per"] = temp_percent.ToString("0.00%");
}
dt.Columns.Add(new DataColumn("zc_per")); //增加支出百分比列
for (int k = 0; k < dt.Rows.Count; k++)
{
temp_percent = Convert.ToDouble(dt.Rows[k]["zc"]) / sumzhichu;
dt.Rows[k]["zc_per"] = temp_percent.ToString("0.00%");
}
dt.Columns.Add(new DataColumn("jy_per")); //增加结余百分比列
for (int m = 0; m < dt.Rows.Count; m++)
{
temp_percent = Convert.ToDouble(dt.Rows[m]["jy"]) / sumjieyu;
dt.Rows[m]["jy_per"] = temp_percent.ToString("0.00%");
}
dataGridView1.DataSource = dt;
2.DataGridView实现页脚统计方法
private void BindDataOnGrid()
{
dsProductTableAdapters.ProductsTableAdapter adtProduct = new GetTotalAtFooter.dsProductTableAdapters.ProductsTableAdapter();
dsProduct.ProductsDataTable productTable = adtProduct.GetProducts();
dsProduct.ProductsRow pr = productTable.NewProductsRow();
pr.ProductName = "总计:";
decimal totalPrice = 0M;
foreach (dsProduct.ProductsRow dpr in productTable.Rows)
{
totalPrice += dpr.UnitPrice;
}
//pr.UnitPrice = Convert.ToDecimal(adtProduct.GetSumUnitPrice());//用sql的sum函数在数据集里面进行计算
pr.UnitPrice = totalPrice;//用程序的方法计算DataTable里面的值
pr.Discontinued = false;
productTable.Rows.InsertAt(pr, productTable.Rows.Count);
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = productTable;
}
string sql_select = "select C_Name,sum(C_ShouRu) as sr,sum(C_ZhiChu) as zc,sum(C_Jieyu) as jy from t_szk_a where C_Date between #" + dtp_start.Text + "# and #" + dtp_end.Text + "# group by C_Name";
DataTable dt = DB_DataGridView.DGV_source(sql_select); //调用执行sql,返回一个DataTable
double sumshouru = 0; //总收入
double sumzhichu = 0; //总支出
double sumjieyu = 0; //总结余
double temp_percent = 0;
//计算总收入、总支出、总结余
for (int i = 0; i < dt.Rows.Count; i++)
{
sumshouru += Convert.ToDouble(dt.Rows[i]["sr"]);
sumzhichu += Convert.ToDouble(dt.Rows[i]["zc"]);
sumjieyu += Convert.ToDouble(dt.Rows[i]["jy"]);
}
dt.Columns.Add(new DataColumn("sr_per")); //增加收入百分比列
for (int j = 0; j < dt.Rows.Count; j++)
{
temp_percent = Convert.ToDouble(dt.Rows[j]["sr"]) / sumshouru;
dt.Rows[j]["sr_per"] = temp_percent.ToString("0.00%");
}
dt.Columns.Add(new DataColumn("zc_per")); //增加支出百分比列
for (int k = 0; k < dt.Rows.Count; k++)
{
temp_percent = Convert.ToDouble(dt.Rows[k]["zc"]) / sumzhichu;
dt.Rows[k]["zc_per"] = temp_percent.ToString("0.00%");
}
dt.Columns.Add(new DataColumn("jy_per")); //增加结余百分比列
for (int m = 0; m < dt.Rows.Count; m++)
{
temp_percent = Convert.ToDouble(dt.Rows[m]["jy"]) / sumjieyu;
dt.Rows[m]["jy_per"] = temp_percent.ToString("0.00%");
}
dataGridView1.DataSource = dt;
2.DataGridView实现页脚统计方法
private void BindDataOnGrid()
{
dsProductTableAdapters.ProductsTableAdapter adtProduct = new GetTotalAtFooter.dsProductTableAdapters.ProductsTableAdapter();
dsProduct.ProductsDataTable productTable = adtProduct.GetProducts();
dsProduct.ProductsRow pr = productTable.NewProductsRow();
pr.ProductName = "总计:";
decimal totalPrice = 0M;
foreach (dsProduct.ProductsRow dpr in productTable.Rows)
{
totalPrice += dpr.UnitPrice;
}
//pr.UnitPrice = Convert.ToDecimal(adtProduct.GetSumUnitPrice());//用sql的sum函数在数据集里面进行计算
pr.UnitPrice = totalPrice;//用程序的方法计算DataTable里面的值
pr.Discontinued = false;
productTable.Rows.InsertAt(pr, productTable.Rows.Count);
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = productTable;
}
相关文章推荐
- dataGridView的计算问题(相乘)
- C++第1次实验:简单计算问题体验
- 浮点数计算问题
- ScrollView与ListView合用问题(正确计算Listview的高度)
- 关于π值的计算问题
- 哈夫曼编码计算带权路径长度问题
- 数值计算问题--素数
- 关于c#里面DataGridView的一点问题
- 文献:利用自驱动分子马达并行计算子集和问题 Parallel computation with molecular-motor-propelled agents...(PNAS)
- 关于DataGridView的数据源绑定字符串两个值得注意的问题
- DataGridview刷新后报索引异常的问题
- 【模板】计算几何--线段相交问题
- 计算几何之大圆包含小圆问题
- 【matlab】GPU 显卡版本与计算能力(compute capability)兼容性问题
- php高精度计算问题
- DataGridView里的Checkbox全选问题解决了!
- 性能测试关于并发人数计算问题参考
- Fast bit count问题(即计算一个unsigned int的二进制表达中1的数目)
- vs中使用M_PI的问题及解决 角度转弧度&根据弧度计算圆周上点的坐标的方法
- 大数计算问题