Даже если этот вопрос довольно старый, я хотел бы предложить расширение ответа Нираджа Доши.Его ответ остается верным для DataGridView с привязкой к данным.Недавно у меня возникла проблема с вычислением сводки в редактируемом пользователем DataGridView, решение которого отличается деталями.Во всяком случае, это тоже довольно просто.Я пишу свои функции на более высоком уровне абстракции, который описывает рабочий процесс, но исключает детали реализации.
Прежде всего вам нужно инициализировать DataGridView, см.
private void InitializeDataGridView()
{
SetColumnTypes();
AddEmptyRow();
AddSummaryRow();
}
Я установил DataGridView.AllowUsersToAddRows
на false
, чтобы новая строка находилась ниже итоговой строки.Поэтому я добавляю пустую строку, которую пользователь может заполнить своими данными.Строка сводки установлена на ReadOnly, поскольку мы не хотим, чтобы наш пользователь ее редактировал.Всякий раз, когда вызывается CellEndEdit, я обновляю DataGridView следующим методом
private void UpdateDataGridView()
{
RemoveSummaryRow();
RemoveEmptyRows();
UpdateRowNumbers();
AddEmptyRow();
AddSummaryRow();
}
Сначала я удаляю сводку и все пустые строки (вам нужно позаботиться. Если вы пытаетесь удалить строку, которую вытолько что отредактированное исключение будет выдано. Я еще не выяснил, как это сделать, но я только что составил решение. Я исправлю, когда я придумаю решение.) После этого я устанавливаю рабочий номер вкаждый из рядов.Это на самом деле не требуется, но деталь моей реализации.В конце я снова добавляю пустую строку, которую пользователь может использовать для добавления дополнительных данных, а затем вычисляет и добавляет итоговую строку.
Как я уже говорил, это еще не готовое решение, а скорееконцепция, которая работает, но с некоторыми причудами и ошибками.