事前定義されたdataGridView列をSQLステートメントの結果にバインドする洗練された方法はありますか?
例:
dataGridView1.Columns.Add("EID", "ID");
dataGridView1.Columns.Add("FName", "FirstName");
のようないくつかのSQL
SELECT t.FirstName AS FName, t.EmpID AS EID
FROM table t ...
それから私は電話します
dataGridView1.DataSource = someDataSet.Tables[0].DefaultView;
最後の呼び出しでデータグリッドに列を追加しましたが、新しい列を追加しないように、列名でバインドしたいだけです。
この例では、次のような結果が得られます。
テーブル列:ID、FirstName、FName、EID(IDおよびFirstNameは空のセルを保持します)
これを取得する方法:
Table columns: ID, FirstName or FirstName, ID
宜しくお願いします!
AutoGenerateColumnsをfalseに設定する以外に、DataGridViewの各列のDataPropertyNameをデータソースの対応するフィールドに設定する必要もあります。これは、DataSourceプロパティを設定する前に、デザイナまたはコードで設定できます。
使用する dataGridView1.Columns["FName"].DataPropertyName = "FName"
ここで、FNameはデータテーブルの列です。
DataGridViewにはAutoGenerateColumns
プロパティがあると思いますね。
dataGridView1.AutoGenerateColumns = True;
MSDNドキュメントから:
public bool AutoGenerateColumns {set;取得する; } System.Windows.Forms.DataGridViewのメンバー
概要:System.Windows.Forms.DataGridView.DataSourceまたはSystem.Windows.Forms.DataGridView.DataMemberプロパティが設定されているときに、列が自動的に作成されるかどうかを示す値を取得または設定します。
戻り値:列を自動的に作成する必要がある場合はtrue。それ以外の場合はfalse。デフォルトはtrueです。
プロパティは[プロパティ]ウィンドウにはありませんが、私の例のようにコードで設定する必要があります。
WinFormを実行している場合、重要な部分は、DataTableの列名と一致するようにDataPropertyName
プロパティを設定することです。デザイナまたはコードで次のように実行できます。
Me.AccountDataGridView.Columns("Account").DataPropertyName = "Account"
もちろん、これを設定しました:
Me.AccountDataGridView.AutoGenerateColumns = False
グリッドビューのColumnsタグに列を追加するのはどうですか?
<Columns>
<asp:BoundField DataField="EID" HeaderText="ID" />
<asp:BoundField DataField="FName" HeaderText="First name" />
...