DataGridView 列在清除数据并重新填充列后停止正常工作
DataGridView columns stop working correctly after clearing data and repopulating columns
在我第一次尝试在一个有用的应用程序中使用 DataGridView 时,我很高兴地说我能够看到许多有用的帖子,它们帮助我构建了一个基本的功能性应用程序。我的 DataGridView 目前是一个固定的 4 列网格,它正在从 MySQL 数据库中查询数据。第 4 列必须是超链接类型的列。当我第一次通过按钮执行以下代码时,结果正是我所期望的,我充满了喜悦:
获取按钮代码为:
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles btn_GetData.Click
cnString = "datasource=" + ip + ";username=" + username + ";password=" + password + ";database=" + database_name + ""
sqlQRY = "Select * from " + table_name + " WHERE Batch =" + txt_PalletNo.Text + ""
If txt_PalletNo.Text = "*" Then
sqlQRY = "Select * from " + table_name + ""
Else
sqlQRY = "Select * from " + table_name + " WHERE Batch =" + txt_PalletNo.Text + ""
End If
conn = New MySqlConnection(cnString)
Try
conn.Open()
da = New MySqlDataAdapter(sqlQRY, conn)
Dim cb As MySqlCommandBuilder = New MySqlCommandBuilder(da)
da.Fill(ds, "" + table_name + "")
DataGridView1.DataSource = ds
DataGridView1.DataMember = "" + table_name + ""
txt_qty.Text = DataGridView1.RowCount
DataGridView1.DataSource = ds
DataGridView1.DataMember = "" + table_name + ""
Catch ex As Common.DbException
MsgBox(ex.ToString)
Finally
txt_PalletNo.Clear()
conn.Close()
End Try
End Sub
但是,如果我使用按钮清除网格并请求一组新数据,列属性似乎发生了变化,headers 发生了变化,第 4 列似乎切换为普通文本列,如下所示此处显示:
清除按钮代码为:
Private Sub btn_Clear_Click(sender As System.Object, e As System.EventArgs) Handles btn_Clear.Click
DataGridView1.DataSource = Nothing
ds.Clear()
DataGridView1.Rows.Clear() 'I also tried Columns.Clear() Here
txt_PalletNo.Clear()
txt_qty.Clear()
End Sub
我需要帮助了解当我 运行 第二次或第三次填充网格的函数时会发生什么。我认为清除数据集并再次 运行ning 函数每次都会产生相同的列属性。老实说,这是我第一次尝试使用 DataGridView,所以我的知识非常有限。我希望这是一个我没有正确选择的简单 属性。
如有任何提示,我们将不胜感激。
不要使用ds.clear
您需要创建新实例。如果你需要清除 ds 创建新实例并再次填充它
ds = new dataSet
在我第一次尝试在一个有用的应用程序中使用 DataGridView 时,我很高兴地说我能够看到许多有用的帖子,它们帮助我构建了一个基本的功能性应用程序。我的 DataGridView 目前是一个固定的 4 列网格,它正在从 MySQL 数据库中查询数据。第 4 列必须是超链接类型的列。当我第一次通过按钮执行以下代码时,结果正是我所期望的,我充满了喜悦:
获取按钮代码为:
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles btn_GetData.Click
cnString = "datasource=" + ip + ";username=" + username + ";password=" + password + ";database=" + database_name + ""
sqlQRY = "Select * from " + table_name + " WHERE Batch =" + txt_PalletNo.Text + ""
If txt_PalletNo.Text = "*" Then
sqlQRY = "Select * from " + table_name + ""
Else
sqlQRY = "Select * from " + table_name + " WHERE Batch =" + txt_PalletNo.Text + ""
End If
conn = New MySqlConnection(cnString)
Try
conn.Open()
da = New MySqlDataAdapter(sqlQRY, conn)
Dim cb As MySqlCommandBuilder = New MySqlCommandBuilder(da)
da.Fill(ds, "" + table_name + "")
DataGridView1.DataSource = ds
DataGridView1.DataMember = "" + table_name + ""
txt_qty.Text = DataGridView1.RowCount
DataGridView1.DataSource = ds
DataGridView1.DataMember = "" + table_name + ""
Catch ex As Common.DbException
MsgBox(ex.ToString)
Finally
txt_PalletNo.Clear()
conn.Close()
End Try
End Sub
但是,如果我使用按钮清除网格并请求一组新数据,列属性似乎发生了变化,headers 发生了变化,第 4 列似乎切换为普通文本列,如下所示此处显示:
清除按钮代码为:
Private Sub btn_Clear_Click(sender As System.Object, e As System.EventArgs) Handles btn_Clear.Click
DataGridView1.DataSource = Nothing
ds.Clear()
DataGridView1.Rows.Clear() 'I also tried Columns.Clear() Here
txt_PalletNo.Clear()
txt_qty.Clear()
End Sub
我需要帮助了解当我 运行 第二次或第三次填充网格的函数时会发生什么。我认为清除数据集并再次 运行ning 函数每次都会产生相同的列属性。老实说,这是我第一次尝试使用 DataGridView,所以我的知识非常有限。我希望这是一个我没有正确选择的简单 属性。
如有任何提示,我们将不胜感激。
不要使用ds.clear 您需要创建新实例。如果你需要清除 ds 创建新实例并再次填充它
ds = new dataSet