Я думаю, что проблема здесь:
Dgd1("Race", Dgd1.Rows.Count - 1).Value = "TOTAL"
Dgd1("OiseauxSevrés", Dgd1.Rows.Count - 1).Value = Sum
("NetOiseauxSevrés", Dgd1.Rows.Count - 1).Value = Sum1
Кажется, что ваше представление данных связано с данными , но здесь вы пытаетесь обновить сетку напрямую. Так что твои изменения не прилипают. Что вам нужно сделать, это обновить базу данных или еще лучше, вы можете использовать bindingsource .
Чтобы добавить новую строку, вы можете сделать так:
Dim dr As DataRow = dt.NewRow()
With dr
.Item("Field1") = "Value1"
.Item("Field2") = "Value2"
.Item("Field3") = "Value3"
End With
dt.Rows.Add(dr)
Или более короткое событие: добавьте значения для каждого поля в строке:
dt.Rows.Add("Value1", "Value2", "Value3")
Но пользователь может щелкнуть столбцы, чтобы изменить порядок сортировки, или даже перетащить столбцы, чтобы изменить их положение. Таким образом, вам может понадобиться придумать какой-нибудь трюк, чтобы сохранить желаемый макет. Может быть скрытый ключ сортировки или что-то еще. Я бы, вероятно, держал промежуточные итоги вне таблицы данных, хотя . Почему бы не использовать метки или строку состояния в нижней части формы?
Я бы просто пересчитал промежуточные итоги при изменении базовых данных. Например, вы можете выполнить вычисления с помощью функции Compute .
. Если вы пытаетесь суммировать столбцы, вам может пригодиться функция DataColumn.Expression .