在我第一次尝试在一个有用的应用程序中使用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
但是,如果我使用按钮清除网格并请求一组新数据,则列属性似乎会发生变化,标题会发生变化,第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
我需要帮助了解当我运行第二次或第三次填充网格的功能时会发生什么。我想清除数据集并再次运行该函数每次都会产生相同的列属性。为了谦虚和诚实,这是我第一次尝试使用DataGridView,所以我的知识非常有限。我希望这是一个我没有正确选择的简单属性。
任何提示都将不胜感激。
答案 0 :(得分:1)
请勿使用 ds.clear 您需要创建新实例。如果你需要清除ds创建新实例并再次填充
ds = new dataSet