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