0

我有一个DataGridView绑定到表的。在我执行以下代码后:

Dim filterTable As New DataTable
filterTable.Columns.Add("KeyName")
filterTable.Columns.Add("Path")

GridView.DataSource = filterTable

GridView.Columns.Count remains 0.

基本上,BindUnidentifiedKeys(UnidentifiedKeys As Dictionary(Of String, String), ByRef GridView As DataGridView)被称为。

我这样称呼它: UnidentifiedKeysManager.Instance.BindUnidentifiedKeys(UnidentifiedKeysManager.Instance.GetKeys, grdUnidentifiedKeys)

我通过引用传递给它一个字典和一个DataGridView, 。

然而,当我将它的数据源设置为具有列的数据表时,GridView的列仍然存在0。我不知道为什么会这样。

4

4 回答 4

0

绑定到 DataGridView 时,请注意属性AutoGenerateColumns。如果在将数据表绑定到 DataGridView 时将此属性设置为 True,它将根据数据表中定义的列生成列,这可能是您所追求的:

Dim filterTable As New DataTable
filterTable.Columns.Add("KeyName")
filterTable.Columns.Add("Path")

GridView.AutoGenerateColumns = True
GridView.DataSource = filterTable

或者,您可以进入设计器并在 DataGridView 中手动创建列。为绑定的网格视图执行此操作时,设置每列的DataPropertyName属性,该属性会将网格视图列绑定到数据表中的相应列/字段(确保在两者中都保留列顺序)。在这种情况下,您不希望自动生成列。您也可以以编程方式执行此操作。

于 2013-07-10T18:16:11.993 回答
0

尝试创建一个BindingSource并将其设置DataSource为您的filterTable,然后将 DataGridView 设置为DataSource等于BindingSource.

例子:

BindingSource bs = new BindingSource();
bs.DataSource = filterTable;
GridView.DataSource = bs;
GridView.Refresh();

另请查看文档...

http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.datasource.aspx http://msdn.microsoft.com/en-us/library/y0wfd4yz(v=vs.90 ).aspx

于 2013-07-10T17:56:44.677 回答
0

GridView没有任何列,在这种情况下,有DataTable。有它自己的GridView列集合,它与datasource.

于 2013-07-10T17:56:24.217 回答
0

我必须这样做以确保列有时总是存在..

GridView.Columns.Clear();
GridView.DataSource = null;
GridView.AutoGenerateColumns = true;
GridView.DataSource = datasource
GridView.DataMember = "Table1";
于 2017-06-05T10:03:17.523 回答