2010-02-16 2 views
4

Howdy, используя winforms vs2008.Настроить связанный datagridview

Я хочу использовать слегка настроенное datagridview, но не могу подумать о способе его выполнения.

я есть 1. а sqldataadaptor заполнения набора данных 2. источник связывания связывается с набором данных 3а DataGridView с BindingSource, установленной в качестве источника данных.

Я хочу, чтобы привязка позволяла синхронизировать между набором данных и datagridview, поэтому я могу редактировать данные, а затем обновлять базу данных с помощью sqldataadaptor. Обновить.

Я хочу показать некоторые пользовательские столбцы, которые являются рассчитанными результатами. И я хочу показать последнюю нижнюю строку, которая является итогом всех столбцов в DVG.

Моя проблема - когда DGV привязан, я не могу добавить пользовательский столбец или строку, это не позволит мне. Я знаю, что могу добавить его непосредственно в набор данных, который является базовым источником данных, но затем, изменив структуру набора данных, которые я не могу обновить до базы данных после того, как были внесены изменения.

или может я ???

Может ли кто-нибудь сказать мне, как я могу добавить свои собственные столбцы и итоговую итоговую строку в связанный DGV.

Также, если im здесь, если я нажимаю на верхнюю часть столбца для сортировки по нему, в связанной DGV, будет ли он также повторно сортировать базовый набор данных, так что я отредактировал бы все, оставаясь синхронизированным?

заранее спасибо за любую помощь

ответ

1

Да, вы можете.

Адаптер не заботится о структуре. Это касается только имен столбцов, используемых в командах Select/Insert/Update/Delete. Вы можете добавить собственные столбцы, столбцы выражений, столбцы для промежуточных итогов, столбцы для итогов или все, что вам нужно. Даже измените порядок столбцов. Я советую добавить столбец сортировки, чтобы вы могли сохранять собственные строки в нужном месте, когда вы или пользователь сортируете.

Вы можете сделать то же самое для пользовательских строк. Когда вы обновляете адаптер, вы обрабатываете событие RowUpdating и устанавливаете SqlRowUpdatingEventArgs.Status в SkipCurrentRow для этих настраиваемых строк. Я настоятельно рекомендую создать столбец типа строки, чтобы вы знали, какие строки пропустить при обновлении. (Вы также можете использовать значение столбца сортировки в качестве ключа для пропусков строк.)

В MSDN или КБ есть несколько статей, которые иллюстрируют, как добавлять полные строки.

  • «Как суммировать поля в Windows Forms управления DataGrid, а затем отображать вычисленные суммы в колонтитул с помощью Visual Basic .NET» в http://support.microsoft.com/kb/836672.

По моему опыту, сначала обработайте таблицу данных перед привязкой. Сделайте то, что вам нужно сделать, чтобы поддерживать сетку и интерфейс сетки. Это нормально манипулировать данными, добавлять/изменять/удалять столбцы и строки, а затем при необходимости восстанавливать.

0

Чтобы иметь возможность добавлять дополнительные несвязанных столбцы в DataGridView вы можете также установить его свойство AutoGenerateColumns в false, а затем добавлять пользовательские столбцы с помощью следующего метода:

dataGridView->Columns->Add(...) 

Чтобы рассчитать содержимое несвязанных столбцов, вы можете обрабатывать события CellValueNeeded и CellValuePushed, но вы должны установить DataGridView в «виртуальный режим», установив для свойства VirtualMode значение true для того, чтобы вызвать обработчики событий.

Надеюсь, это немного поможет.

Смежные вопросы