DataGridView固定列

时间:2012-09-01 08:20:31

标签: datagridview fixed appearance

我有一个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";

1 个答案:

答案 0 :(得分:0)

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

将DataGridView列数据绑定到数据源

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

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

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

停止自动生成列的网格

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

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

(有时你不需要这样做 - 我发现只设置DataPropertyName会经常发生,但是当你不想要它时将AutoGenerateColumns设置为假通常是好的练习)