2014-06-24 20 views
-1

如果兩種情況均未得到滿足,此代碼塊可正常工作。不幸的是,如果在一個程序的同一個實例運行中遇到兩種情況,則搜索的兩列將被合併或增加。但結果不合並。只是列。例如:案例「服務器」將有列A1,A2,A3無論我通過案例服務器運行多少次,它都會很好。但是如果我運行「患者」病例,我的專欄現在是A1,A2,A3,B1,B2,B3。如果我運行案例患者然後案例服務器,但是列將以不同的順序。vb.net:爲什麼我的datagridview堅持結合2個不同的sql搜索?

Private Sub frmSearch_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    With dgvSearch 
     dt.Clear() 
     .DataSource = Nothing 
     .Columns.Clear() 
     .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill 'this does not allow resizing of column width 
     Select Case formSwitch 
      Case "Server" 
       sql = "Select cnn, server, port, uid, detail from tbl_cnnstrings" 
       SelectQuery(lcnn, 3) 
       .DataSource = dt 
       .Columns(0).HeaderText = "Connection Name" 
       .Columns(1).HeaderText = "Server" 
       .Columns(2).HeaderText = "Port" 
       .Columns(3).HeaderText = "Uid" 
       .Columns(4).HeaderText = "Detail" 

       Try  'this code block resizes column and bypass error 
        .Columns(2).Width = 50 
       Catch ex As Exception 

       End Try 
      Case "Patients" 
       sql = "Select concat(patientid_yr, '-', patientid_m, '-', patientid_no) as patientid, concat_ws(' ', lname, ',', fname, ' ', mname) as name from tbl_patinfo order by name;" 
       SelectQuery(cnn, 3) 
       .DataSource = dt 
       .Columns(0).HeaderText = "Patient ID" 
       .Columns(1).HeaderText = "Patient Name" 
       Try  'this code block resizes column and bypass error 
        .Columns(0).Width = 100 
       Catch ex As Exception 

       End Try 
     End Select 

    End With 
End Sub 

我的理論是我沒有正確清理數據表。 FYI:dt =數據表,da = mysqldataadapter,SelectQuery = mysql連接和查詢的自定義子集。 lcnn和cnn只是連接字符串。 採樣輸出: http://i58.tinypic.com/30jkwb9.png

+0

如果你打算低估我,你至少可以解釋。我很確定我今天洗了澡。 – YinYangKim

回答

1

網格不會自動刪除任何列。它會自動添加新列,但您必須手動刪除它們。如果要更改數據源,請將DataSource設置爲Nothing,然後將Clear設置爲Columns集合,然後再設置DataSource

+0

我在dt.clear()下面添加了.DataSource = Nothing和.Columns.Clear()。沒有什麼改變。我做錯了嗎? – YinYangKim

+0

向我們顯示您的當前代碼。只需將其添加爲原始問題的編輯即可。 – jmcilhinney

0

在每種情況下放置dt.clear(),而不是在case語句之外,或者我將爲每個查詢使用不同的數據表和命令,試試看,如果我沒有任何幫助,我很抱歉。

+0

我要試試這個。但從邏輯上講,它不應該是那麼不同。因爲無論如何它都不會跳過這條線。 – YinYangKim

0
dt = New Datatable 

我發現了我的錯誤。顯然我必須在每次使用它時聲明我的數據表是新的。否則,裏面的數據將繼續追加。

相關問題