Почему мой DataGridView не отображает какие-либо данные?
Я успешно использую списки в довольно сложном приложении, но я действительно хочу использовать 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
Моя сетка как бы "загорается", и, очевидно, имеет соответствующее количество строк, просто нет данных. Мое лучшее предположение заключается в том, что мне нужно определить DataMember для моего DataGridView, но я не могу представить, какое значение должно быть там размещено. Я пробовал grdStates.DataMember="TableName" и другие значения (даже ""), но ничего не работает.
1 ответ
Здесь я сделаю предположение, поскольку я пока не могу добавить комментарий к вашему вопросу, и это то, что вы создали свой DataGridView и добавили в него столбцы независимо от столбцов, добавленных в dtStates. Недавно я столкнулся с той же проблемой, что и вы, что привело меня к вашему вопросу. Моя проблема заключалась в том, что я определил DataGridView с 3 столбцами, а затем установил его источник данных в dataTable, который уже имел 3 столбца. Я думал, что это сопоставит столбцы таблицы данных с DataGridView. Фактически он отображал только три столбца, которые я добавил через интерфейс дизайна для каждой строки в таблице данных, но они были пустыми.
Моя первая подсказка была, когда я выбрал строку и нажал Ctrl+C, а затем вставил результаты в Notepad++. Я видел 4 табуляции перед "первым" столбцом. Я удалил определения столбцов вручную из DataGridView, чтобы его единственные столбцы были получены из данных, которые я ему присвоил. Теперь данные показывают, как ожидалось.
Мне все еще нужно выяснить, как отформатировать столбцы до желаемой ширины, но, по крайней мере, данные уже есть. Надеюсь, это поможет! Посмотри мудро.