如何清除有界数据网格视图并在同一个数据网格视图中加载另一个表 [英] How to clear a bounded datagridview and load another table in the same datagridview
问题描述
大家好
我正在尝试从数据库中的值动态加载datagridview。
例如我有2个按钮Button1和Button2。我单击Button1并动态加载datagridview中的第一个表。但是当我点击Button2时,我收到一个错误NullreferenceException未处理 - 对象变量或With块变量未设置。
我已经清除了填充datagridview的数据源。我第一次工作正常。
请帮助
谢谢
我的代码
Hi everyone
I am trying to load datagridview dynamically from values from database.
For instance i have 2 buttons Button1 and Button2. i click on Button1 and load the first table in datagridview dynamically. But when i click on Button2 I get an error "NullreferenceException was unhandled - Object variable or With block variable not set."
I have cleared the datasource that fills the datagridview. I works fine the first time.
Please help
Thankyou
My Code
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim dt As New DataTable
dt.Clear()
datagridview1.DataSource = dt
datagridview1.DataSource = Nothing
datagridview1.Refresh()
Dim cmd As New SqlCommand("select srno, name from table1", sql)
Dim dt As New DataSet()
Dim sda As New SqlDataAdapter(cmd)
sda.Fill(dt)
datagridview1.DataSource = dt.Tables(0)
datagridview1.AutoGenerateColumns = False
datagridview1.Columns("srno").headerText = "Id"
datagridview1.Columns("name").headerText = "Full Name"
End sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim dt As New DataTable
dt.Clear()
datagridview1.DataSource = dt
datagridview1.DataSource = Nothing
datagridview1.Refresh()
Dim cmd As New SqlCommand("select serial, Items from table2", sql)
Dim dt As New DataSet()
Dim sda As New SqlDataAdapter(cmd)
sda.Fill(dt)
datagridview1.DataSource = dt.Tables(0)
datagridview1.AutoGenerateColumns = False
datagridview1.Columns("serial").headerText = "Id"
datagridview1.Columns("Items").headerText = "Name"
End sub
推荐答案
执行以下操作
Do as below
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
ResetDataGridView()
Dim con as New SqlConnection(conString)
Dim cmd As New SqlCommand("select srno as Id , name as 'Full Name' from table1", con)
Dim dt As New DataSet()
Dim sda As New SqlDataAdapter(cmd)
sda.Fill(dt)
datagridview1.DataSource = dt.Tables(0)
con.Close()
End sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
ResetDataGridView()
Dim con as New SqlConnection(conString)
Dim cmd As New SqlCommand("select serial as Id, Items as Name from table2", con)
Dim dt As New DataSet()
Dim sda As New SqlDataAdapter(cmd)
sda.Fill(dt)
datagridview1.DataSource = dt.Tables(0)
con.Close()
End sub
Private Sub ResetDataGridView()
dataGridView1.CancelEdit()
dataGridView1.Columns.Clear()
dataGridView1.DataSource = Nothing
End Sub
解决了它通过设置
Solved it by setting
datagridview1.AutoGenerateColumns = True
感谢您的回复。
Thank you for your replies.
这篇关于如何清除有界数据网格视图并在同一个数据网格视图中加载另一个表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!