清除数据和重新填充列后,DataGridView列将停止正常工作

时间:2016-03-29 15:12:48

标签: vb.net datagridview dataset datasource

在我第一次尝试在一个有用的应用程序中使用DataGridView时,我很高兴地说我能够遇到许多有用的帖子,这些帖子帮助我构建了一个基本的&功能应用。我的DataGridView目前是一个固定的4列网格,用于查询MySQL数据库中的数据。第4列必须是列的超链接类型。当我第一次执行以下代码时,通过一个按钮,结果正是我所期待的,我很高兴:

Good Execution

获取按钮代码为:

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

但是,如果我使用按钮清除网格并请求一组新数据,则列属性似乎会发生变化,标题会发生变化,第4列似乎会切换到普通文本列,如下所示:

Bad execution

清除按钮代码为:

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

我需要帮助了解当我运行第二次或第三次填充网格的功能时会发生什么。我想清除数据集并再次运行该函数每次都会产生相同的列属性。为了谦虚和诚实,这是我第一次尝试使用DataGridView,所以我的知识非常有限。我希望这是一个我没有正确选择的简单属性。

任何提示都将不胜感激。

1 个答案:

答案 0 :(得分:1)

请勿使用 ds.clear 您需要创建新实例。如果你需要清除ds创建新实例并再次填充

  ds = new dataSet