2016-07-25 72 views
0

我想從數據庫(工作)獲取checkboxlist。在頁面上有兩個checkboxlist:第一個在頁面加載時獲取,第二個從第一個checkboxList獲取選定的值。當我從第一個checkboxList中選擇第一次時,這也起作用。但是,當我選擇第一的CheckBoxList然後字符串被結構化這樣獲取checkboxList值從每個選定的類別從父級複選框列表

(「值1」,「值2‘& vbLf &’」)

應該使串這樣

第二個值

( '值1', '值')

現在我不明白這是什麼& vbLf &

Dim joiner As String = "" 
Dim whereClause As String = String.Empty 
Dim categoryCondition As String = String.Empty 

For i = 0 To categoryFilter.Items.Count - 1 
    If categoryFilter.Items(i).Selected Then 
     Dim category As String = categoryFilter.Items(i).ToString 
     categoryCondition = String.Concat(categoryCondition, joiner, String.Format("'{0}'", category)) 
     If joiner = "" Then joiner = "," 
    End If 
Next 
+0

您確定在上面顯示的代碼中生成了換行字符嗎? –

+0

您正試圖以非常複雜的方式將物品連接在一起。看看[Enumerable.Aggregate](https://msdn.microsoft.com/en-us/library/bb548651(v = vs.100).aspx) – djv

+0

@AndrewMortimer你是對的我的表格數據行有問題因爲我從excel中粘貼了它們,並且在某些行中出現了一些空白行。 – SUN

回答

0

使用內置的功能與LINQ得到檢查的項目和字符串連接在一起

  1. 從控制獲取的檢查項目(categoryFilter.CheckedItems
  2. 將它們轉換爲字符串(Cast(Of String)()
  3. '分別放在它們周圍(Select()
  4. 將它們連同,Aggregate()

代碼:

Dim categoryCondition As String = Me.categoryFilter.CheckedItems. 
    Cast(Of String)(). 
    Select(Function(i1) String.Format("'{0}'", i1)). 
    Aggregate(Function(i1, i2) String.Format("{0}, {1}", i1, i2)) 

如果換行仍然存在,這是可能的,它存在於CheckedListBox項目本身。你說這是來自你的數據庫,所以也許這是(不工作)。