我想将数据库表加载到datagridview,我可以编辑和更新列,我现在使用列表视图,但我想使用gartagridview,因为它更容易编辑其中的数据。
我使用此代码在列表视图中显示数据库中的数据:
Public Sub showlistview()
Try
Dim dt As New DataTable
Dim ds As New DataSet
ds.Tables.Add(dt)
Dim da As New OleDbDataAdapter("select * from pay_pretalk where cust_id=" & pretalk_pay.TextBox4.Text & " order by sdate DESC ", con)
da.Fill(dt)
Dim myrow As DataRow
For Each myrow In dt.Rows
ListView1.Items.Add(myrow.Item(0))
ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(myrow.Item(2))
ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(myrow.Item(3))
ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(myrow.Item(4))
ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(myrow.Item(5))
ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(myrow.Item(6))
ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(myrow.Item(7))
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
如何在datagridview中执行相同的操作而不显示数据库的标头并在datagridview属性中使用我的自定义标头。
如果我使用此代码在datagridview中显示数据:
Dim dt As New DataTable
Dim ds As New DataSet
ds.Tables.Add(dt)
Dim da As New OleDbDataAdapter("select * from pay_pretalk where cust_id=" & pretalk_pay.TextBox4.Text & " order by sdate DESC ", con)
da.Fill(dt)
DataGridView1.DataSource = dt
这显示所有带有标题的表!,但我已经添加了一个自定义标题,所以这会错过一切:(
答案 0 :(得分:2)
使用检索到的数据表设置DataGridView.DataSource属性后,您可以启动一个简单的循环,将列标题文本更改为您的首选项
.....
dt.Columns.RemoveAt(1)
dataGridView1.DataSource = dt
for each cl As DataGridViewColumn in dataGridView1.Columns
Select Case cl.HeaderText
Case "FirstColumnName":
cl.HeaderText="MyColumn1Name"
Case "SecondColumnName":
cl.HeaderText="MyColumn2Name"
case "ThirdColumnName":
cl.HeaderText="MyColumn3Name"
... and so on for the other columns ....
End Select
Next
答案 1 :(得分:1)
您可以设置为false
datagridview的auto generate columns属性,并使用每列的data property name属性将其映射到数据源列。
示例代码:
DataGridView1.AutoGenerateColumns = False
Dim index As Integer
index = DataGridView1.Columns.Add("ColumnA", "ColumnA")
DataGridView1.Columns(index).DataPropertyName = "Column1"
index = DataGridView1.Columns.Add("ColumnB", "ColumnB")
DataGridView1.Columns(index).DataPropertyName = "Column2"
index = DataGridView1.Columns.Add("ColumnC", "ColumnC")
DataGridView1.Columns(index).DataPropertyName = "Column3"
Dim dt As New DataTable
Dim ds As New DataSet
ds.Tables.Add(dt)
Dim da As New OleDbDataAdapter("SELECT Column1, Column2, Column3, Column4, Column5 FROM Table1 WHERE Condition = true", con)
da.Fill(dt)
DataGridView1.DataSource = dt
这样您就可以从表中选择Column1
到Column5
,但只有Column1
到Column3
会出现在DGV上;列标题也是ColumnA
,ColumnB
和ColumnC
。
您还可以在DataGridView上的设计时指定它,以保存一些代码并从非常开始的列中定义将出现以及如何;您只需在设置AutoGenerateColumns = false
之前设置它的数据源。