0
在我第一次尝试在有用的应用程序中使用DataGridView时,我很高兴地说我能够遇到很多有用的帖子,帮助我构建了一个基本的&函数式应用程序。我的DataGridView目前是一个固定的4列网格,它正在查询来自MySQL数据库的数据。列4必须是超链接类型的列。当我执行下面的代码在第一时间,通过一个按钮,结果正是我期待,我满心欢喜:DataGridView列在清除数据和重新填充列后无法正常工作
获取按钮代码:
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,因此我的知识非常有限。我希望这是一个简单的属性,我没有选择正确。
任何提示将不胜感激。
我不认为这应该是有ds.Clear() – Claudius
从这些症状,我要说的是,你必须使用Designer中定义的列和清除后清除设计师所做的每一项设置。顺便说一句,为什么你用空字符串连接你的table_name变量? – Steve
尝试将'DataGridView1.AutoResizeColumns()'添加到您的加载例程中。 – rheitzman