2010-12-01 18 views
2

私は問題があり、それを解決することができないようです。私はここの誰かが手伝ってくれると思った。データバインドされたDataGridViewにプログラムで行を追加しますか?

私は顧客のDataGridViewを持つフォームを持っています。さて、実際にデータベースに追加することなく、このDataGridViewに複数の顧客を追加したいと思います。これは、クライアントがクライアントのリストを作成できなければならず、完了した時点ですべてを一度に追加できるからです。

私はこれを試してみました:私はあなたがデータををバインドされたDataGridViewにプログラム的に行を追加カントのラインで何かを言った例外を取得しているため

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

今、これを行うことはできません。

これを解決するには、テーブルアダプタを使用して直接行を挿入するのではなく、行を挿入する方法があります。 DGV。しかし、DGVでカスタムヘッダーを使用する理由は、既存のデータがJOINを介してフェッチされるためです。テーブルアダプタを使用してそれらを追加すると、データベーステーブルスキーマと一致しないという例外が発生します。

今私は本当に失われています...誰もこの問題の(半ば)優雅な解決策を知っていますか?

は、これらの行を表示するためには、あなたに

+1

DGVがバインドされているデータソースはどのようなタイプですか? – BFree

+0

DataSet型です。 – vanneto

答えて

1

DGVをBindingList<YourObject>にバインドします。YourObjectは、データベーススキーマを反映するプロパティを持つシンプルなクラスにすることができます。最初にデータベースからBindingListを入力すると、DGVは自動的にYourObjectインスタンスをリストに追加します。変更をコミットする準備ができたら、BindingListから手動で変更をコミットします。

1

ありがとう、ちょうどデータバインディングの前にUNION(様)アクションを実行します。レコードのリストを取得し、特別なレコードを追加してからデータバインドを追加します。

更新するには特別な操作も必要です。しかし、あなたのデータ構造に関する詳細が完全に不足しているため、何を言うのも不可能です。

+0

私はできる限りこれを説明するようにしようとしています。私は、{LinkID、CustomerID、Type}という構造のリンクを持っています。今、私が持っているDataGridViewは、IDではなく顧客の名前を表示する必要があります(なぜ私はJOINを持っているのですか)。今私はヘッダーを持つDGVを持っている| ID | NameOfCompany |基本的なテーブル構造は異なります。顧客は別のフォームから選択されます。基本的に私が望むもの:DGVはデータに束縛されています。ユーザがリンクを追加して(そしてそれらを編集して)、データベースにそれらをすべて追加したら、プログラムで値を追加してください... – vanneto

+0

質問にそのような情報を追加する方が良いでしょう。特別なレコードをAdapter.Fillの後のDataTableに追加して、Updateの前に削除することができます。しかし、全体的に 'BindingList 'と同じくらい簡単かもしれません。 –