Добавление строк программно в DataGridView, который связан с данными? - PullRequest
2 голосов
/ 01 декабря 2010

У меня есть проблема, и я не могу ее решить.Я думал, что кто-то здесь сможет помочь.

У меня есть форма, которая имеет DataGridView клиентов.Теперь я хочу добавить несколько клиентов в этот DataGridView, фактически не добавляя их в базу данных.Это потому, что клиент должен иметь возможность создавать список клиентов, и когда это будет сделано, добавьте их всех сразу.

Я пробовал это:

string[] array = {"Microsoft", "Redmond", "Something"}
dataGridView.Rows.Add (array);

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

Теперь я также прочитал, что это можно решить с помощьюАдаптер таблицы для вставки строк вместо непосредственного добавления их через.DGV.Но это также невозможно, потому что я использую пользовательские заголовки в DGV, потому что существующие данные выбираются через JOIN, поэтому, если я добавляю их через TableAdapter, я получаю исключение, что они не соответствуют схеме таблицы базы данных.

Теперь я действительно потерян ... Кто-нибудь знает (на полпути) элегантное решение этой проблемы?

Спасибо

Ответы [ 2 ]

1 голос
/ 01 декабря 2010

Свяжите свой DGV с BindingList<YourObject>, где YourObject может быть простым классом со свойствами, отражающими схему вашей базы данных.Сначала заполните BindingList из базы данных, и DGV автоматически добавит YourObject экземпляры в список.Когда вы будете готовы принять изменения, сделайте это вручную из BindingList.

1 голос
/ 01 декабря 2010

Чтобы отобразить эти строки, просто выполните действие, аналогичное UNION, перед привязкой данных.Т.е. получить свой список записей, добавить специальные и затем привязать данные.

Обновление также потребует некоторых специальных действий.Но с полным отсутствием подробностей о ваших структурах данных невозможно сказать что.

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