我有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
。我不知道为什么会这样。
答案 0 :(得分:0)
GridView
没有任何列,在这种情况下,DataTable
没有。 GridView
拥有自己的列集,并且与datasource
不同。
答案 1 :(得分: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
答案 2 :(得分: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 属性,该属性将gridview列绑定到数据表中的相应列/字段(确保在两者中保留列顺序)。在这种情况下,您不希望自动生成列。您也可以通过编程方式执行此操作。
答案 3 :(得分:0)
我必须这样做,以确保有时候列总是存在..
GridView.Columns.Clear();
GridView.DataSource = null;
GridView.AutoGenerateColumns = true;
GridView.DataSource = datasource
GridView.DataMember = "Table1";