2016-03-29 74 views
0

在我第一次嘗試在有用的應用程序中使用DataGridView時,我很高興地說我能夠遇到很多有用的帖子,幫助我構建了一個基本的&函數式應用程序。我的DataGridView目前是一個固定的4列網格,它正在查詢來自MySQL數據庫的數據。列4必須是超鏈接類型的列。當我執行下面的代碼在第一時間,通過一個按鈕,結果正是我期待,我滿心歡喜:DataGridView列在清除數據和重新填充列後無法正常工作

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

我不認爲這應該是有ds.Clear() – Claudius

+0

從這些症狀,我要說的是,你必須使用Designer中定義的列和清除後清除設計師所做的每一項設置。順便說一句,爲什麼你用空字符串連接你的table_name變量? – Steve

+0

嘗試將'DataGridView1.AutoResizeColumns()'添加到您的加載例程中。 – rheitzman

回答

1

請勿使用ds.clear 您需要創建新的實例。如果妳需要清除DS創建新實例,並再填寫

ds = new dataSet 
相關問題