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";
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;
}