2017-03-05 153 views
0

我在lst1我有一堆os項目,我想放入lst2但沒有重複他們每個列表框。我使用如何防止將重複數據添加到列表框中?

接口:

這是工作,但你可能需要用它來了解我的疑問。

Dim dtTa_Enc As DataTable = New DataTable("Ta_Enc") 
Dim dsTa As DataSet = New DataSet("Ta_E") 

Dim adapter As New MySqlDataAdapter 
Dim ds As DataSet = New DataSet 

adapter.SelectCommand = New MySqlCommand 
adapter.SelectCommand.Connection = connection 
adapter.SelectCommand.CommandText = query 

connection.Open() 
adapter.Fill(ds, "tables") 
connection.Close() 

lst1.DataSource = ds.Tables("tables") 
lst1.DisplayMember = "name" 
lst1.ValueMember = "codta" 

dtTa_Enc.Columns.Add("codta") 
dtTa_Enc.Columns.Add("name") 
dsTa.Tables.Add(dtTa_Enc) 
lst2.DataSource = dsTa.Tables("Tables") 
lst2.DisplayMember = "name" 
lst2.ValueMember = "codta" 
dtTa_Enc.Rows.Add(lst1.ValueMember, lst1.GetItemText(lst1.SelectedItem)) 

的疑問:
現在,用戶按下一個按鈕,他選擇的LST1項目添加到LST2。簡單!但是,如果他嘗試添加相同的項目會怎麼樣。 VB.Net可以阻止他這樣做嗎?

If not dtTa_Enc.find("codTa = " + lst1.valuemember) Then 
    dtTa_Enc.Rows.Add(lstTabelas.ValueMember, lstTabelas.GetItemText(lstTabelas.SelectedItem)) 
End If 
+0

這段代碼的修改沒有工作,但是這是我發現到現在爲止最好的:[DateTable](http://stackoverflow.com/questions/12386827/datatable-how-to-get- item-value-with-row-name-and-column-name-vb) – Biohazard

回答

0

下的添加事件處理程序,你可以在開始時放置一些邏輯,以防止添加重複項目。

Dim lst1Selected As String = CType(lst1.SelectedItem, DataRowView)("name").ToString 
    Dim flag As Integer = 0 
    For Each item As Object In lst2.Items 
     Dim istr As String = CType(item, DataRowView)("name").ToString 
     If istr = lst1Selected Then 
      flag = 1 
      Exit For 
     End If 
    Next 

    If flag = 1 Then 
     Exit Sub 
    End If 
+0

我認爲我們正在接近,但那不是。 – Biohazard

+0

因爲你的解決方案給了我這個例外:「類型'DataRowView'轉換爲'String'類型無效」 – Biohazard

+0

我編輯了代碼,請看它是否有效 –

0

您可以通過LST2列舉,以確定是否有任何值匹配您選擇的項目,lst1.SelectedItem

所以循環,

Dim found As Boolean = False 
    For Each itm As String in lst2.Items 
     If itm = lst1.SelectedItem Then 
      found = True 
     End If 
    Next 
    If Not found Then 
     'Add it. 
    End If 

或者你可以簡單地使用Contains方法:

If Not lst2.Items.Contains(lst1.SelectedItem) Then 
     'Add it. 
    End if. 
+0

感謝您的幫助,Alex! – Biohazard

+0

但你的第一個解決方案給了我這個例外:「類型'DataRowView'類型'字符串'的轉換無效」 – Biohazard

+0

您的上一次,雖然它運行,lst2仍然接收重複的「項目」 – Biohazard

相關問題