使用VB.Net和Access将字符串转换为DataGridViewTextBoxColumn
在网上找不到任何东西,我想我错过了一些小东西 我在access数据库中有一个列名列表,它应该与我在vb.net项目中创建的DataGridViewTextBoxColumn匹配。我想使用access数据库中的列名将DataGridViewTextBoxColumn调用到我的dgv中。示例代码如下:使用VB.Net和Access将字符串转换为DataGridViewTextBoxColumn,vb.net,string,ms-access,datagridview,datagridviewcolumn,Vb.net,String,Ms Access,Datagridview,Datagridviewcolumn,在网上找不到任何东西,我想我错过了一些小东西 我在access数据库中有一个列名列表,它应该与我在vb.net项目中创建的DataGridViewTextBoxColumn匹配。我想使用access数据库中的列名将DataGridViewTextBoxColumn调用到我的dgv中。示例代码如下: Dim column1 As New DataGridViewTextBoxColumn Dim column2 As New DataGridViewTextBoxColumn
Dim column1 As New DataGridViewTextBoxColumn
Dim column2 As New DataGridViewTextBoxColumn
Dim myheader As New DataGridViewTextBoxColumn
With column1
.Name = "column1"
.HeaderText = "Column 1"
.SortMode = DataGridViewColumnSortMode.NotSortable
.Width = 200
End With
With column2
.Name = "column2"
.HeaderText = "Column 2"
.SortMode = DataGridViewColumnSortMode.NotSortable
.Width = 400
End With
a = 0
Do While a < 2
myheader = ds.Tables("columnheadersdatabase").Rows(a).Item("J001") '//rows(a) = column1 and rows(a + 1) = column2
dgv.Columns.Add(myheader)
a += 1
Loop
我似乎可以将access单元格值转换为DataGridViewTextBoxColumn(myheader)。我尝试使用dim myheader作为字符串,但也不起作用
如果有人有任何想法,我们将非常感谢您的帮助 可以将
DataGridViewTextBoxColumn
对象存储在列表中。函数可以检查是否必须在DataGridView的columns集合中添加该列表的项
请尝试以下代码:
'Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'Test data
'Dim ds As New DataSet
'Dim tb As New DataTable("columnheadersdatabase")
'tb.Columns.Add("J001")
'tb.Rows.Add(tb.NewRow)
'tb.Rows.Add(tb.NewRow)
'tb.Rows.Add(tb.NewRow)
'tb(0).Item("J001") = "column1"
'tb(1).Item("J001") = "column2"
'tb(2).Item("J001") = "column3"
'ds.Tables.Add(tb)
'A list that will contain all the DataGridViewTextBoxColumns
Dim TextBoxColumnList As New List(Of DataGridViewTextBoxColumn)
Dim column1 As New DataGridViewTextBoxColumn With
{
.Name = "column1",
.HeaderText = "Column 1",
.SortMode = DataGridViewColumnSortMode.NotSortable,
.Width = 200
}
Dim column2 As New DataGridViewTextBoxColumn With
{
.Name = "column2",
.HeaderText = "Column 2",
.SortMode = DataGridViewColumnSortMode.NotSortable,
.Width = 400
}
'The column1, column2 DataGridViewTextBoxColumns are being added in the list
TextBoxColumnList.Add(column1)
TextBoxColumnList.Add(column2)
Dim a As Integer = 0
Do While a < 2
'Reads the name of the column from the datatable
Dim ColumnName As String = ds.Tables("columnheadersdatabase").Rows(a).Item("J001").ToString
'Searches the index of the DataGridViewTextBoxColumn from the list that has the
'same name as the column name that was read from the datatable
Dim ColumnIndex As Integer = GetColumnIndex(TextBoxColumnList, ColumnName)
'Checks whether the index has been found
If ColumnIndex <> -1 Then
'Adds the DataGridViewTextBoxColumn in the DataGridView
dgv.Columns.Add(TextBoxColumnList(ColumnIndex))
End If
a += 1
Loop
'End Sub
Private Function GetColumnIndex(ByVal TextBoxColumnList As List(Of DataGridViewTextBoxColumn), ByVal ColumnName As String) As Integer
'Checks whether the list has an object reference
If TextBoxColumnList Is Nothing Then
Return -1
End If
Dim i As Integer
'Loops for all the items of the DataGridViewTextBoxColumn list
For i = 0 To TextBoxColumnList.Count - 1
'Compares the names
If TextBoxColumnList(i).Name.ToUpper = ColumnName.ToUpper Then
Return i
End If
Next
Return -1
End Function
'Private子按钮1\u单击(发送者作为对象,e作为事件参数)处理按钮1。单击
"测试数据,
'Dim ds作为新数据集
“Dim tb作为新数据表(“columnheadersdatabase”)
'tb.Columns.Add(“J001”)
'tb.Rows.Add(tb.NewRow)
'tb.Rows.Add(tb.NewRow)
'tb.Rows.Add(tb.NewRow)
'tb(0).项目(“J001”)=“第1列”
'tb(1).项目(“J001”)=“第2列”
“tb(2).项目(“J001”)=“第3列”
'ds.Tables.Add(tb)
'将包含所有DataGridViewTextBoxColumns的列表
Dim TextBoxColumnList作为新列表(DataGridViewTextBoxColumn的)
Dim column1作为新的DataGridViewTextBoxColumn,带有
{
.Name=“column1”,
.HeaderText=“第1列”,
.SortMode=DataGridViewColumnSortMode.NotSortable,
.宽度=200
}
Dim Column 2作为新的DataGridViewTextBoxColumn,带有
{
.Name=“column2”,
.HeaderText=“第2列”,
.SortMode=DataGridViewColumnSortMode.NotSortable,
.宽度=400
}
'列表中正在添加列1、列2 DataGridViewTextBoxColumns
TextBoxColumnList.Add(第1列)
TextBoxColumnList.Add(第2列)
将a调整为整数=0
做一个<2的人
'从datatable中读取列的名称
Dim ColumnName As String=ds.Tables(“columnheadersdatabase”).Rows(a).Item(“J001”).ToString
'从具有
'与从datatable中读取的列名相同
Dim ColumnIndex As Integer=GetColumnIndex(TextBoxColumnList,ColumnName)
'检查是否已找到索引
如果列索引为-1,则
'在DataGridView中添加DataGridViewTextBoxColumn
dgv.Columns.Add(TextBoxColumnList(ColumnIndex))
如果结束
a+=1
环
'末端接头
私有函数GetColumnIndex(ByVal TextBoxColumnList作为列表(DataGridViewTextBoxColumn的列表),ByVal ColumnName作为字符串)作为整数
'检查列表是否有对象引用
如果TextBoxColumnList为空,则
返回-1
如果结束
作为整数的Dim i
'为DataGridViewTextBoxColumn列表的所有项循环
对于i=0到TextBoxColumnList.Count-1
'比较名称
如果TextBoxColumnList(i).Name.ToUpper=ColumnName.ToUpper,则
返回i
如果结束
下一个
返回-1
端函数
'Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'Test data
'Dim ds As New DataSet
'Dim tb As New DataTable("columnheadersdatabase")
'tb.Columns.Add("J001")
'tb.Rows.Add(tb.NewRow)
'tb.Rows.Add(tb.NewRow)
'tb.Rows.Add(tb.NewRow)
'tb(0).Item("J001") = "column1"
'tb(1).Item("J001") = "column2"
'tb(2).Item("J001") = "column3"
'ds.Tables.Add(tb)
'A list that will contain all the DataGridViewTextBoxColumns
Dim TextBoxColumnList As New List(Of DataGridViewTextBoxColumn)
Dim column1 As New DataGridViewTextBoxColumn With
{
.Name = "column1",
.HeaderText = "Column 1",
.SortMode = DataGridViewColumnSortMode.NotSortable,
.Width = 200
}
Dim column2 As New DataGridViewTextBoxColumn With
{
.Name = "column2",
.HeaderText = "Column 2",
.SortMode = DataGridViewColumnSortMode.NotSortable,
.Width = 400
}
'The column1, column2 DataGridViewTextBoxColumns are being added in the list
TextBoxColumnList.Add(column1)
TextBoxColumnList.Add(column2)
Dim a As Integer = 0
Do While a < 2
'Reads the name of the column from the datatable
Dim ColumnName As String = ds.Tables("columnheadersdatabase").Rows(a).Item("J001").ToString
'Searches the index of the DataGridViewTextBoxColumn from the list that has the
'same name as the column name that was read from the datatable
Dim ColumnIndex As Integer = GetColumnIndex(TextBoxColumnList, ColumnName)
'Checks whether the index has been found
If ColumnIndex <> -1 Then
'Adds the DataGridViewTextBoxColumn in the DataGridView
dgv.Columns.Add(TextBoxColumnList(ColumnIndex))
End If
a += 1
Loop
'End Sub
Private Function GetColumnIndex(ByVal TextBoxColumnList As List(Of DataGridViewTextBoxColumn), ByVal ColumnName As String) As Integer
'Checks whether the list has an object reference
If TextBoxColumnList Is Nothing Then
Return -1
End If
Dim i As Integer
'Loops for all the items of the DataGridViewTextBoxColumn list
For i = 0 To TextBoxColumnList.Count - 1
'Compares the names
If TextBoxColumnList(i).Name.ToUpper = ColumnName.ToUpper Then
Return i
End If
Next
Return -1
End Function