Я пытаюсь добавить gridviewrow как промежуточный итог в приведенном ниже коде, и он не позволяет мне добавить его в эту строку в методе AddTotalRow
. Это говорит об ошибке ниже.
gvData.Rows.Add(row);
string currentYear = string.Empty;
int subTotal, subTotalCompleted = 0;
int subTotalRowIndex = 0;
protected void OnRowCreated(object sender, GridViewRowEventArgs e)
{
subTotal = 0;
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataTable dt = (e.Row.DataItem as DataRowView).DataView.Table;
string year = dt.Rows[e.Row.RowIndex]["year"].ToString();
if (year != currentYear)
{
if (e.Row.RowIndex > 0)
{
for (int i = subTotalRowIndex; i < e.Row.RowIndex; i++)
{
subTotal += Convert.ToInt32(gvData.Rows[i].Cells[2].Text);
subTotalCompleted += Convert.ToInt32(gvData.Rows[i].Cells[3].Text);
}
this.AddTotalRow("Sub Total", subTotal.ToString("C2"), subTotalCompleted.ToString("C2"));
subTotalRowIndex = e.Row.RowIndex;
}
currentYear = year;
}
}
}
private void AddTotalRow(string labelText, string value, string completed)
{
GridViewRow row = new GridViewRow(0, 0, DataControlRowType.DataRow, DataControlRowState.Normal);
row.BackColor = ColorTranslator.FromHtml("#F9F9F9");
row.Cells.AddRange(new TableCell[4] {
new TableCell(),
new TableCell{ Text = labelText, HorizontalAlign = HorizontalAlign.Right },
HyperLinkCell(value, "http://www.yahoo.com"),
HyperLinkCell(completed, "http://www.google.com")});
gvData.Controls[0].Controls.Add(row);
}
protected TableCell HyperLinkCell(string text, string url)
{
TableCell cell = new TableCell();
HyperLink link = new HyperLink();
try
{
link.Text = text;
link.Font.Underline = true;
link.Target = "_blank";
link.NavigateUrl = url;
link.Attributes.Add("style", "color:Black;");
cell.Controls.Add(link);
}
catch (Exception ex)
{
throw ex;
}
return cell;
}
protected void OnDataBound(object sender, EventArgs e)
{
for (int i = subTotalRowIndex; i < gvData.Rows.Count; i++)
{
subTotal += Convert.ToInt32(gvData.Rows[i].Cells[2].Text);
subTotalCompleted += Convert.ToInt32(gvData.Rows[i].Cells[3].Text);
}
this.AddTotalRow("Sub Total", subTotal.ToString("C2"), subTotalCompleted.ToString("C2"));
}
Может ли кто-нибудь помочь мне исправить это?
Обновление 1:
Промежуточный итог для столбца завершен, и его 2-й промежуточный итог суммирует первый промежуточный итог, который не должен происходить.
Завершенный промежуточный итог имеет 1 998,00 и вместо него должен быть 1411,00. Пожалуйста, найдите ниже картинку для справки.