Я хочу суммировать строки некоторых из моих столбцов datagridview и добавить строку внизу, которая будет содержать итоги для каждого столбца.
Я нашел способ рассчитать итоги для каждого столбца datagridview, который мне нужен, однако я не могу программно добавить новую строку в свой datagridview.
Ниже мой фрагмент кода
if (rbDA.Checked == true)
{
dept = "DA";
dayTbl = "tblDayDA";
getDayData = "Select date,num_jobs_pending,jobs_called,total_jobs_overall,num_repairs_called,total_num_repairs,num_contracts_called,total_num_contracts FROM " + dayTbl + " WHERE date BETWEEN #" + dtbFrom.Value.ToShortDateString().Trim() + "# AND #" + dtpTo.Value.ToShortDateString().Trim() + "#";
}
if (rbEL.Checked == true)
{
dept = "Elevator";
dayTbl = "tblDayEL";
getDayData = "Select date,num_jobs_pending,jobs_called,total_jobs_overall,num_repairs_called,total_num_repairs,num_contracts_called,total_num_contracts FROM " + dayTbl + " WHERE date BETWEEN #" + dtbFrom.Value.ToShortDateString().Trim() + "# AND #" + dtpTo.Value.ToShortDateString().Trim() + "#";
}
else if (rbAC.Checked == true)
{
dept = "AC";
dayTbl = "tblDayAC";
getDayData = "Select date,num_jobs_pending,jobs_called,total_jobs_overall,num_repairs_called,total_num_repairs,num_contracts_called,total_num_contracts FROM " + dayTbl + " WHERE date BETWEEN #" + dtbFrom.Value.ToShortDateString().Trim() + "# AND #" + dtpTo.Value.ToShortDateString().Trim() + "#";
}
else if (rbProj.Checked == true)
{
dept = "Projects";
dayTbl = "tblDayPROJ";
getDayData = "Select date,num_jobs_pending,jobs_called,total_jobs_overall,num_repairs_called,total_num_repairs,num_contracts_called,total_num_contracts FROM " + dayTbl + " WHERE date BETWEEN #" + dtbFrom.Value.ToShortDateString().Trim() + "# AND #" + dtpTo.Value.ToShortDateString().Trim() + "#";
}
if (con.State == ConnectionState.Closed)
{
con.Open();
}
try
{
DataSet ds1 = new DataSet();
DataTable dt1 = new DataTable();
ds1.Tables.Add(dt1);
OleDbDataAdapter da = new OleDbDataAdapter(getDayData, con);
da.Fill(dt1);
dgvGetDates.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dt1.NewRow(); // dt1.NewRow();
dgvGetDates.DataSource = dt1.DefaultView;
string label = "Total";
int jobsCalled = 0;
int totalNumJobs = 0;
int totalJobsAllDepts = 0;
int numRepairsCalled = 0;
int totalRepairsToCall= 0;
int numContractsCalled = 0;
int numContractsToCall = 0;
for (int i = 0; i < dgvGetDates.Rows.Count; i++)
{
jobsCalled += Convert.ToInt32(dgvGetDates.Rows[i].Cells["jobs_called"].Value);
totalNumJobs = Convert.ToInt32(dgvGetDates.Rows[i].Cells["num_jobs_pending"].Value) + totalNumJobs;
totalJobsAllDepts += Convert.ToInt32(dgvGetDates.Rows[i].Cells["total_jobs_overall"].Value);
numRepairsCalled += Convert.ToInt32(dgvGetDates.Rows[i].Cells["num_repairs_called"].Value);
totalRepairsToCall += Convert.ToInt32(dgvGetDates.Rows[i].Cells["total_num_repairs"].Value);
numContractsCalled += Convert.ToInt32(dgvGetDates.Rows[i].Cells["num_contracts_called"].Value);
numContractsToCall += Convert.ToInt32(dgvGetDates.Rows[i].Cells["total_num_contracts"].Value);
}
DataGridViewRow row = (DataGridViewRow)dgvGetDates.Rows[0].Clone();
string[] row1 = new string[] { jobsCalled.ToString(), totalNumJobs.ToString(), totalJobsAllDepts.ToString(), numRepairsCalled.ToString(), totalRepairsToCall.ToString(), numContractsCalled.ToString(), numContractsToCall.ToString() };
dgvGetDates.Rows.Add(row1);
DGVPrinter printer = new DGVPrinter();
printer.Title = "CSR Calls Per Day Report - " + dept +" Department";
printer.SubTitle = " Date:" + dtbFrom.Value.ToShortDateString() + " - " + dtpTo.Value.ToShortDateString() + " Printed: " + DateTime.Now;
printer.SubTitleFormatFlags = StringFormatFlags.LineLimit | StringFormatFlags.NoClip;
printer.PageNumbers = true;
printer.PageNumberInHeader = false;
printer.PorportionalColumns = true;
printer.HeaderCellAlignment = StringAlignment.Near;
printer.FooterSpacing = 15;
//printer.Footer = "";
printer.PrintPreviewDataGridView(dgvGetDates);