Строка итогов в DataGridView - PullRequest
       5

Строка итогов в DataGridView

3 голосов
/ 08 апреля 2011

Я занимаюсь разработкой приложения winform.Я хотел показать сумму столбцов в последнем ряду каждого столбца.Эта строка всегда должна быть видимой.

В данный момент я думаю о добавлении еще одного вида сетки данных непосредственно под моим видом таблицы данных с записями, и в этом нижнем виде таблицы будет показана сумма.

Если есть лучшееспособ достижения этой задачи?

Ответы [ 3 ]

3 голосов
/ 08 апреля 2011

Нет, нужно добавить еще одно представление данных

Решение 1: Пожалуйста, обратитесь к это решение

Решение 2: Если приведенная выше ссылка не совсем то, что вы хотите,

Вы можете попытаться вручную добавить последнюю, итоговую, строку, в которой вы можете отобразить нужную вам информацию. Например, вы можете попробовать сделать следующее:

  1. Считать данные из базы данных и заполнить System.Data.DataTable
  2. Добавить один столбец во вновь созданную таблицу данных - этот столбец может быть установлен для последнего, итогового значения, строка
  3. Программно добавить одну дополнительную строку, которая содержит подходящие сводные данные
  4. Выполнить привязку данных к элементу управления DataGridView
  5. Использование соответствующего события, выделенного жирным шрифтом или иным образом графически отличного резюме строка (строка с дополнительным значением столбца установить в true)
1 голос
/ 08 апреля 2011

Вы можете сделать это так же, как вы предлагаете, например, разместить сетку данных для отображения суммы.вы также можете обрабатывать горизонтальную прокрутку, если есть больше столбцов.

В этой ссылке

есть еще один способ добавить строки в свой источник данных.Сам отображать сумму.

0 голосов
/ 05 августа 2015

Даже если этот вопрос довольно старый, я хотел бы предложить расширение ответа Нираджа Доши.Его ответ остается верным для DataGridView с привязкой к данным.Недавно у меня возникла проблема с вычислением сводки в редактируемом пользователем DataGridView, решение которого отличается деталями.Во всяком случае, это тоже довольно просто.Я пишу свои функции на более высоком уровне абстракции, который описывает рабочий процесс, но исключает детали реализации.

Прежде всего вам нужно инициализировать DataGridView, см.

private void InitializeDataGridView()
{
    SetColumnTypes();
    AddEmptyRow();
    AddSummaryRow();
}

Я установил DataGridView.AllowUsersToAddRows на false, чтобы новая строка находилась ниже итоговой строки.Поэтому я добавляю пустую строку, которую пользователь может заполнить своими данными.Строка сводки установлена ​​на ReadOnly, поскольку мы не хотим, чтобы наш пользователь ее редактировал.Всякий раз, когда вызывается CellEndEdit, я обновляю DataGridView следующим методом

private void UpdateDataGridView()
{
    RemoveSummaryRow();
    RemoveEmptyRows();
    UpdateRowNumbers();
    AddEmptyRow();
    AddSummaryRow();
}

Сначала я удаляю сводку и все пустые строки (вам нужно позаботиться. Если вы пытаетесь удалить строку, которую вытолько что отредактированное исключение будет выдано. Я еще не выяснил, как это сделать, но я только что составил решение. Я исправлю, когда я придумаю решение.) После этого я устанавливаю рабочий номер вкаждый из рядов.Это на самом деле не требуется, но деталь моей реализации.В конце я снова добавляю пустую строку, которую пользователь может использовать для добавления дополнительных данных, а затем вычисляет и добавляет итоговую строку.

Как я уже говорил, это еще не готовое решение, а скорееконцепция, которая работает, но с некоторыми причудами и ошибками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...