2016-07-25 3 views
0

데이터베이스에서 체크 박스 목록을 가져 오려고합니다 (작동 중). 페이지에 두 개의 체크 박스 목록이 있습니다. 첫 번째는 페이지가로드 될 때 가져오고 두 번째는 첫 번째 checkboxList에서 선택된 값을 가져옵니다. 그것은 첫 번째 checkboxList에서 처음 선택할 때도 작동합니다. 하지만 다음 문자열 ('값 2'& vbLf & " ''값 1 ')이체크 박스 받기 부모 체크 박스 목록에서 선택된 카테고리에 따른 목록 값

같은

그것은해야 문자열이

같은 구조 도착 첫 checkboxList에서 두 번째 값을 선택할 때

('값 1', '값 2')

이 01 무엇을 지금은 이해가 안 .

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. 로 변환
  4. 개별적으로 주위에 을 넣으십시오 (Select())
  5. , (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 항목 자체에 존재하는 가능성이다

. 당신은 그것이 당신의 데이터베이스에서오고 있다고 말했기 때문에 아마도 그것은 작동하지 않을 것입니다.