我正在寻找一种方法,使我的datagridview中的第一列成为标题

时间:2013-06-13 15:41:20

标签: vb.net datagridview headertext

好的,我有一个数据集,它从excel文件中提取特定单元格并填充datagridview列。但是,我拉的单元格确实需要是数据网格视图中的标题而不是普通列。那么有一种简单的方法可以将这一列数据转换为标题文本吗?为了帮助说明,我在下面提供了一些代码,包括评论。

' The following lines specify the exact cells I with to pull from the excel file and populates the first column of the datagridview

MyCommand1 = New OleDbDataAdapter("Select * from [myWorksheet$A15:B21]", MyConnection)


'Here is my dataset'
    ds1 = New System.Data.DataSet()
DataGridView1.DataSource = ds1.Tables(0).DefaultView
'So at this point I have a datagridview with a column of data from the exact cells 
' from the excel file that I want


'This last part is code I found on MSDN which will hide the column headers and will turn the first column into headertext. Essentially it is adding an additional column to the left and turning that into headertext. 

Private Sub DataGridView8_CellPainting(sender As Object, e As DataGridViewCellPaintingEventArgs) Handles DataGridView8.CellPainting
    Dim rowNumber As Integer = 1

    For Each row As DataGridViewRow In DataGridView8.Rows
        If row.IsNewRow Then Continue For
        row.HeaderCell.Value = "Row " & rowNumber
        rowNumber = rowNumber + 1
    Next
    DataGridView8.AutoResizeRowHeadersWidth( _
        DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders)
End Sub

'If anyone can find out a way for me to make the first column headertext it would make my day. 

3 个答案:

答案 0 :(得分:0)

只是一个想法..

Dim tblXls as DataTable = ds1.Tables(0) '---> this is your table
Dim tblNew as New Datatable
Dim dc as DataColumn

For x as Integer = 0 to tblXls.Rows.Count -1
    dc = New DataColumn
    dc.DataType = System.Type.GetType("System.DateTime")
    dc.ColumnName = tblXls.Rows(x).Item(0)
    tblNew.Columns.Add(dc)
Next

然后将tblNew设置为您的DGV数据源..

DataGridView.Datasource = tblNew

这只是准备标题..你知道其余的..

答案 1 :(得分:0)

不是很确定,但更改连接字符串可能会为您完成任务。

connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Test.xlsx;Extended Properties=" + Convert.ToChar(34).ToString() + "Excel 12.0;HDR=Yes;IMEX=2" + Convert.ToChar(34).ToString() + ""

在上面的代码中,HDR表示标题。设置HDR = Yes以将第一行显示为标题,将HDR = No显示为将第一行显示为普通行。

您可以获得更多信息Get Data from MS Excel in asp.net

答案 2 :(得分:0)

您可以在CellFormatting事件中填充行标题:

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Dim SQL As String = "SELECT [ZIP], [Place] FROM [City_2]"
    dgv1.DataSource = Gen.GetDataView(SQL) ' load the datasource here
    dgv1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells)
    dgv1.Columns(0).Visible = False ' contains same as row header
    dgv1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders
End Sub

Private Sub dgv1_CellFormatting(sender As Object, e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles dgv1.CellFormatting
    dgv1.Rows(e.RowIndex).HeaderCell.Value = dgv1.Rows(e.RowIndex).Cells(0).Value
End Sub