0

我有一个 DataGridView,我用它来从 access 数据库中放入数据。我现在在主表单上,当表单打开时,网格只是灰色的。

但是,当单击按钮时,信息会与列一起显示。我希望在单击按钮之前列存在,因此当打开表单时,您可以看到列减去数据的内容。

我尝试在设计模式下添加列,但是当单击按钮时,其他列只会被添加。

我当前的代码如下。

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

要解决此问题,您需要做两件事 - 首先,您需要告诉您创建的列与您的数据表的关系。其次,您需要告诉数据网格不要为您生成列。

将 DataGridView 列数据绑定到数据源

当您使用设计器将列添加到网格时,您将看到编辑此列的选项。选择此项,您将看到 DataGridViewColumn 的属性列表。

您感兴趣的属性是DataPropertyName- 这告诉列要绑定到数据源中的哪个属性。

因此,例如,如果在您的数据表中有一个“名字”列,则需要DataPropertyName为添加的网格名字列设置为“名字”。

停止网格自动生成列

添加数据源时看到更多列的原因是,添加数据源时DataGridView会自动为您生成列。

要关闭此功能,您只需将该DataGridView属性设置AutoGenerateColumns为 false。这可以通过设计器或通过代码来完成。

(有时你不需要这样做——我发现DataPropertyName经常设置 will 就可以了,但是AutoGenerateColumns当你不想要它时设置为 false 通常是一个好习惯)

于 2012-09-01T11:14:33.570 回答