0

アクセスデータベースからデータを入れるために使用している DataGridView があります。現時点ではメインフォームにあり、フォームが開いているときはグリッドがグレー表示されています。

ただし、ボタンをクリックすると、情報が列とともに表示されます。ボタンがクリックされる前に列がそこにあるようにしたいので、フォームを開いたときに、列からデータを引いたものを見ることができます。

デザインモードで列を追加しようとしましたが、ボタンをクリックすると他の列が追加されます。

私の現在のコードは以下です。

string sConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=Sailing.accdb";
OleDbConnection conSailing = new OleDbConnection(sConnection);
conSailing.Open();

string sQueryShipsPort = "Select ShipName, Weight FROM Ships WHERE Inport = True ;";
OleDbDataAdapter dataadapter = new OleDbDataAdapter(sQueryShipsPort, conSailing);
DataSet ds = new DataSet();

dataadapter.Fill(ds, "Ships Table");
conSailing.Close();
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "Ships Table";
4

1 に答える 1

0

これを解決するには、2 つのことを行う必要があります。最初に、作成する列がデータ テーブルとどのように関係しているかを伝える必要があります。次に、列を生成しないようにデータ グリッドに指示する必要があります。

DataGridView 列をデータ ソースにデータバインドする

デザイナーを使用してグリッドに列を追加すると、この列を編集するオプションが表示されます。これを選択すると、DataGridViewColumn のプロパティのリストが表示されます。

関心のあるプロパティは次のとおりですDataPropertyName。これにより、データ ソース内のどのプロパティにバインドするかが列に通知されます。

たとえば、データ テーブルに列 'FirstName' があるDataPropertyName場合、追加するグリッドの名の列を 'FirstName' に設定する必要があります。

グリッドが列を自動生成しないようにする

データ ソースを追加すると、より多くの列が表示されるのは、データ ソースを追加すると、DataGridViewが自動的に列を生成するためです。

これをオフにするには、DataGridViewプロパティAutoGenerateColumnsを false に設定するだけです。これは、デザイナーまたはコードを使用して行うことができます。

(これを行う必要がない場合もあります - DataPropertyNamewill を設定するだけでよくあることがわかりましたが、それがAutoGenerateColumns必要ない場合は false に設定することをお勧めします)

于 2012-09-01T11:14:33.570 に答える