2

ユーザーがデータベース内のテーブルの行を編集できるようにする単純な C# アプリケーションを構築しています。インターフェイスは非常にシンプルで、基本的には行のリストといくつかのボタンです。行を選択して [追加] ボタンを押すと、各列のテキスト ボックスを含む新しいフォームがポップアップ表示されます。これらの列に、選択した行の値を入力したいと考えています。

いくつかの記事を読んだ後、おそらくこれを行う最も簡単な方法は、TextBox の Text プロパティを DataSource にバインドすることであることがわかりました。そのため、データベースからの値を DataTable オブジェクトに格納し、選択した DataRow を取得して TextBox にバインドする計画を立てました。これは私が使用する行です:

productNameTextBox.DataBindings.Add(new Binding("Text", productRow, "Name"));

結果は次の例外です。

タイプ 'System.ArgumentException' の初回例外が System.Windows.Forms.dll で発生しました DataSource のプロパティまたは列 Name にバインドできません。パラメータ名: dataMember

はい、「名前」列は存在します。

バインディングのドキュメント (http://msdn.microsoft.com/en-us/library/4wkkxwcz(v=VS.80).aspx) と多くの例に従って読んだ後、バインドする必要があるように思えます行が含まれているDataTable。次のコードは私にとってはうまくいきました:

productNameTextBox.DataBindings.Add(new Binding("Text", productRow.Table, "Name"));

ただし、常に TextBox の値を最初の行に設定します。使用する行を指定するにはどうすればよいですか?

4

1 に答える 1

2

行ではなく、DataView から取得した DataRowView を使用します。Iirc これは、ICustomTypeDescriptor を介して柔軟な (カスタム) バインディング用に構成されます。

于 2010-10-10T04:57:53.067 に答える