我一直在一个相当复杂的应用程序中成功使用列表视图,但我真的很想使用 DataGridView,但我无法让它工作。我正在使用类或我自己的伪中间件来读取数据,并避免将表绑定到控件。这是一个无法正常工作的简化代码示例。
Dim ds As New DataSet
Dim nrows as Integer
ds = dbio.ReadLocations("") 'Reads place names, with an optional search string
nrows = ds.Tables(0).Rows.Count
'Note: I can insert code here that successfully displays the data in a listview
Dim dtStates As DataTable = New DataTable("TableName")
Dim drStates As DataRow 'A component row of dtstates
Dim dr As DataRow 'A component row of the result set, ds
dtStates.Clear()
'There are just 3 columns in the data grid
dtStates.Columns.Add("ID", GetType(String))
dtStates.Columns.Add("StateName", GetType(String))
dtStates.Columns.Add("Country", GetType(String))
'Build the data table, row-by-row
For i = 1 To nRows
dr = ds.Tables(0).Rows(i - 1) 'Get a row from the populated data set
drStates = dtStates.NewRow 'Create a new row object
'Populate the new row object
drStates("ID") = dr("ID").ToString
drStates("StateName") = dr("StateName")
drStates("Country") = dr("Country")
'Put the new row object into the data table
dtStates.Rows.Add(drStates)
Next
'Bind the DataGridView to my data table
grdStates.DataSource = dtStates
我的网格“亮了”,显然有适当的行数,只是没有数据。我最好的猜测是我需要为我的 DataGridView 定义一个 DataMember,但我无法想象应该在那里放置什么值。我尝试了 grdStates.DataMember="TableName" 和其他值(甚至是“”),但没有任何效果。