Попытка получить итоги на GridviewC#

Место общения программистов C#
Ответить
Anonymous
 Попытка получить итоги на Gridview

Сообщение Anonymous »

У меня есть Gridview элементов с бюджетом, который показывает три суммы: сумма распределенной, потраченная сумма и оставшаяся сумма. В моей базе данных эти значения имеют типовые числовые (7,2). Мой клиент хотел бы, чтобы кумулятивные итоги внизу за эти три суммы. Я последовал примеру, который я нашел в Интернете, однако я получаю ошибку InvalidCastException, когда я запускаю ее. Вот мой код Gridview: < /p>

Код: Выделить всё



























< /code>
Вот соответствующий код C#: < /p>
SqlCommand cmd = new SqlCommand(sql, conn);

using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
conn.Open();
sda.SelectCommand = cmd;
using (DataTable dt = new DataTable())
{
sda.Fill(dt);

if (budgetType == "Department")
{
DeptBudgetView.DataSource = dt;
DeptBudgetView.DataBind();

// added on 7/30/25 to calculate totals for the footer row
// getting an InvalidCastException here

decimal totalAllocated = dt.AsEnumerable().Sum(row => row.Field("amtAllocated") ?? 0);
decimal totalSpent = dt.AsEnumerable().Sum(row => row.Field("amtSpent") ?? 0);
decimal totalRemaining = dt.AsEnumerable().Sum(row => row.Field("amtRemaining") ?? 0);

DeptBudgetView.FooterRow.Cells[0].Text = "Totals:";
DeptBudgetView.FooterRow.Cells[1].Text = totalAllocated.ToString("C");
DeptBudgetView.FooterRow.Cells[2].Text = totalSpent.ToString("C");
DeptBudgetView.FooterRow.Cells[3].Text = totalRemaining.ToString("C");
DeptBudgetView.FooterRow.Cells[0].HorizontalAlign = HorizontalAlign.Right;
}
else // Vendor Budget
{
VendorBudgetView.DataSource = dt;
VendorBudgetView.DataBind();
// added on 7/30/25 to calculate totals for the footer row
decimal totalAllocated = dt.AsEnumerable().Sum(row => row.Field("amtAllocated") ?? 0);
decimal totalSpent = dt.AsEnumerable().Sum(row => row.Field("amtSpent") ?? 0);
decimal totalRemaining = dt.AsEnumerable().Sum(row => row.Field("amtRemaining") ?? 0);
VendorBudgetView.FooterRow.Cells[0].Text = "Totals:";
VendorBudgetView.FooterRow.Cells[1].Text = totalAllocated.ToString("C");
VendorBudgetView.FooterRow.Cells[2].Text = totalRemaining.ToString("C");
VendorBudgetView.FooterRow.Cells[0].HorizontalAlign = HorizontalAlign.Right;
}
}
}
Примечание: у меня нет нулевых значений в таблицах базы данных.


Подробнее здесь: https://stackoverflow.com/questions/797 ... a-gridview
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»