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