为什么我的DataGridView不显示任何数据?

时间:2013-06-18 19:10:57

标签: vb.net datagridview

我一直在一个相当复杂的应用程序中成功使用listviews,但我真的想使用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”和其他值(甚至是“”),但没有任何效果。

1 个答案:

答案 0 :(得分:0)

我会在这里做一个假设,因为我还无法在你的问题中添加评论,那就是你创建了你的DataGridView并向其添加了列,与添加到dtStates的列无关。 我最近遇到了同样的问题,这引出了我的问题。 我的问题是我已经定义了一个包含3列的DataGridView,然后将其数据源设置为已经有3列的dataTable。我认为它会将数据表的列映射到DataGridView。实际上它只显示了我通过设计界面为数据表中的每一行添加的三列,但它们都是空的。

我的第一个线索就是当我选择一行并按Ctrl + C,然后将结果粘贴到Notepad ++中。我在"第一个"之前看到了4个制表位。柱。 我从DataGridView中删除了手动列定义,以便它的唯一列来自我分配给它的数据表。现在数据显示为预期。

我仍然需要弄清楚如何将列格式化为我想要的宽度,但至少现在有数据。希望有所帮助!明智地冲浪。