2010-02-26 7 views
0

내 응용 프로그램에 채워진 데이터 테이블이 있고 datasource 속성을 설정하여 ddatagridview에 바인딩합니다.왜 내 datagridview.rowfilter가 작동하지 않습니다. 계속 구문 오류 메시지가 표시됩니다.

런타임에이 테이블을 필터링하고 싶습니다. 사용자가 버튼을 클릭하면 다음 코드가 실행됩니다.

dataManager.VDMSTables.DataTable.DefaultView.RowFilter = column + " LIKE '%" + criteria + "%'"; 

모든 클래스가 올바르게 채워집니다. 런타임에이 줄에 도달하면 다음과 같은 오류 메시지가 나타납니다.

구문 오류 : '데이터'연산자 다음에 피연산자가 없습니다. rowfilter를 빌드하는 데 사용하는 변수가 올바르게 채워집니다. 문자열을 하드 코딩 할 때도 여전히 동일한 오류가 발생합니다. 왜?

+2

문제의 원인이되는 예제 기준 값이 있습니까? 나는 column이 Column 객체가 아니라 string이라고 가정하고 있는가? – Crispy

답변

2

구성중인 실제 문자열은 디버거에서 볼 때 어떤 모양입니까? "데이터"라는 단어는 거기에 나타나지 않습니다. 그렇죠?

그렇다면 Data는 예약어이며이를 표시해야합니다. 마찬가지로 :

dataManager.VDMSTables.DataTable.DefaultView.RowFilter 
    = String.Format("[{0}] LIKE '%{1}%'" 
     , column 
     , YourSingleQuoteEscape(criteria)); 

생산하는 것 :

"[Data] like '%strawberries%'" 

... 당신의 RowFilter에 대해 올바르게 구문 분석해야한다.

+0

아니요. 문자열을 하드 코딩 할 때도 문자열 s = "열 이름 = '테스트'"오류가 발생합니다. 그러면이 문자열 s를 행 필터 iike로 사용합니다. dataview.rowfilter = s; – gsirianni

+0

일부 온라인 게시물에 사용되는 교반 방법입니다. 나는 그것을 줄 것이다. – gsirianni

+0

왜이 라인이 문제의 근원이라고 생각하십니까? .RowFilter = "mycol like 'fishies'"를 설정할 수 있고 여전히 throw하면 다음 단계는 줄을 완전히 제거하고 어떤 일이 발생하는지 확인하는 것입니다. 내 의혹은 그때 그것이 같은 위치에 떠오르는 어떤 행이 던져 질 것입니다. 즉, 위와 아래의 줄을보십시오. –

관련 문제