web-dev-qa-db-ja.com

dataGridViewの事前定義された列をSQLステートメントの列にバインドする方法(新しい列を追加せずに)?

事前定義された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

宜しくお願いします!

11
Jooj

AutoGenerateColumnsをfalseに設定する以外に、DataGridViewの各列のDataPropertyNameをデータソースの対応するフィールドに設定する必要もあります。これは、DataSourceプロパティを設定する前に、デザイナまたはコードで設定できます。

16
jaybz

使用する dataGridView1.Columns["FName"].DataPropertyName = "FName"ここで、FNameはデータテーブルの列です。

13
Iftikhar

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です。

プロパティは[プロパティ]ウィンドウにはありませんが、私の例のようにコードで設定する必要があります。

2
Neil Barnwell

WinFormを実行している場合、重要な部分は、DataTableの列名と一致するようにDataPropertyNameプロパティを設定することです。デザイナまたはコードで次のように実行できます。

Me.AccountDataGridView.Columns("Account").DataPropertyName = "Account"

もちろん、これを設定しました:

Me.AccountDataGridView.AutoGenerateColumns = False
1

グリッドビューのColumnsタグに列を追加するのはどうですか?

<Columns>
<asp:BoundField DataField="EID" HeaderText="ID" />
<asp:BoundField DataField="FName" HeaderText="First name" />
...
0
adrianos