【发布时间】:2014-05-27 21:47:16
【问题描述】:
我正在从 Excel 电子表格中提取信息并尝试在代码中构建 DataGridView。我发现this information 很有帮助。在调试中,一切似乎都是正确的。我的列数和行数正确,但 DataGridView 上没有显示任何内容。为什么?这真是令人沮丧。
Dim dTable as New DataTable
For Each currcol As Excel.Range In inputRange.Columns
dTable.Columns.Add(currcol.Value2, GetType(String))
Next
inputRange = objXLWs.Range("A" & HeaderRow + 1 & ":" & EndingColumn & EndingRow)
Dim i as Integer
For Each row As Excel.Range In inputRange.Rows
Dim dataRow As DataRow = dTable.NewRow()
i=0
For Each incell As Excel.Range In row.Columns
dataRow(i) = incell.Value2
i += 1
Next
dTable.Rows.Add(dataRow)
Next
bs4DataPreview.DataSource = dTable ' Set up BindingSource
dgv4PreviewData.AutoGenerateColumns = False
dgv4PreviewData.DataSource = bs4DataPreview
dgv4PreviewData.Show()
dgv4PreviewData.Refresh()
编辑源代码以反映 DataTable 的使用。在 DataGridView 上仍然一无所获。
【问题讨论】:
-
将datagridview绑定到
iList?试试DataTable。虽然从未尝试过,但您的String()是一个数组,而不是iEnumerable。 -
您的 inputRange 是否正确?这个
"A" & HeaderRow + 1 & ":" & EndingColumn & EndingRow会导致什么结果? -
我感兴趣的数据在标题行之后,可能不是第 1 行。同样,列数是可变的。我从这个美丽中得到了最后一行: Dim EndingRow As Integer = objXLWs.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Row
-
我同意猪排,请使用 DataTable 作为您的 DataSource。
-
从使用 List(of String) 更改为 DataTable。结果一样!即使从调试模式查看时一切看起来都是正确的,DataGridView 中也没有显示任何内容。
标签: vb.net winforms datagridview