Почему мой 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, чтобы его единственные столбцы были получены из данных, которые я ему присвоил. Теперь данные показывают, как ожидалось.

Мне все еще нужно выяснить, как отформатировать столбцы до желаемой ширины, но, по крайней мере, данные уже есть. Надеюсь, это поможет! Посмотри мудро.

Другие вопросы по тегам