2017-03-29 10 views
0

SQL 문과 마찬가지로 [charlist]를 사용하여 DataGrid를 필터링하고 싶습니다.C# DataGridView.DefaultView.RowFilter with charlist

PlantName에서 "çiçek"를 검색한다고합시다. 내 SQL 선택 같았 어;

SELECT * FROM Plants WHERE PlantName LIKE %[cç][ıi][cç]ek% 

이 반환되었습니다.

çiçek 
cicek 
cıcek 
çıçek 
etc.... 

DataGridView.DefaultView.RowFilter에 대해 어떻게하면됩니까?

+1

[DataGridView에 필터 셀에 분음 부호 (억양), 즉 무시] 가능 중복 (http://stackoverflow.com/questions/34340371/datagridview-filter-ignoring-diacritics-accents- on-cells-words) –

+0

안녕하세요 동생, 빠른 답장을 보내 주셔서 감사합니다. 나는 이것을 시험해 보았습니다. http://stackoverflow.com/a/249126/5700467 [ıi]는 괜찮습니다.하지만 글자가 5 개 더 있습니다. [cç], [gğ], [oö], [sş], [uü]는이 서신에서 작동하지 않습니다. –

답변

0

나는 길을 발견했다.

먼저 검색 색인을 만들어야합니다. 예를 들어 Plants 테이블이 있고 PlantName 필드가 있습니다. PlantName의 새 필드를 채우고 까다로운 문자를 대치하면됩니다.

데이터베이스 쪽;

바꾸기 (바꾸기 (바꾸기 (바꾸기 (바꾸기; 바꾸기; 바꾸기; 바꾸기; 바꾸기; 바꾸기; 바꾸기; I ','I ')' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' '),'- ',' ') AS SEARCH_INDEX

C# 측;

private string mReplace(string txt) 
    { 
     string sonuc; 
     if (txt == null) { return ""; } 
     txt = txt.Replace(" ", " "); 
     txt = txt.Replace("-", " "); 
     txt = txt.Replace("ç", "C"); 
     txt = txt.Replace("Ç", "C"); 
     txt = txt.Replace("ı", "I"); 
     txt = txt.Replace("i", "I"); 
     txt = txt.Replace("İ", "I"); 
     txt = txt.Replace("ğ", "G"); 
     txt = txt.Replace("Ğ", "G"); 
     txt = txt.Replace("ö", "O"); 
     txt = txt.Replace("Ö", "O"); 
     txt = txt.Replace("ş", "S"); 
     txt = txt.Replace("Ş", "S"); 
     txt = txt.Replace("ü", "U"); 
     txt = txt.Replace("Ü", "U"); 
     sonuc = txt.ToUpper(); 
     return sonuc; 
    } 

사용 검색 라인, 같은에서이 기능;

DataTable1.DefaultView.RowFilter = "SEARCH_INDEX LIKE '*" + mReplace(txtPlantName.Text) + "*'"; 

http://mehmetgoldenhead.blogspot.com.tr/2017/05/ms-acces-icin-turkce-karakter-replace.html