Language/C#
[C#] 검색 기능 구현 - 입력하자마자 검색
서른마흔다섯개
2020. 1. 30. 16:24
<Form1.cs>
//생략
private void Main_searchTextBox_KeyUp(object sender, KeyEventArgs e) //검색 기능 구현 할 textbox keyup이벤트
{
Thread.Sleep(40);
commonfunction.Main_SearchTextBox(Main_searchTextBox.Text);
}
<CommonFunction.cs>
String MainSearchResult;
#region //Main.cs의 검색기능 메소드
/// <summary>
/// 검색텍스트박스 keypressEvent를 받아와 처리해 주는 메소드
/// </summary>
/// <param name="TextBoxInputValue"> KeypressEvent로 textbox에 입력된 값 </param>
public void Main_SearchTextBox(String TextBoxInputValue)
{
DataTable form1DT_copy = form1.dt; // form1의 datatable form1DT_copy에 복사
MainSearchResult = TextBoxInputValue;
IEnumerable<DataRow> linq_row = null;
DataTable form1DT_re = new DataTable();
form1DT_re = form1DT_copy.Clone();
if (MainSearchResult == "")
{
form1._dgv.DataSource = form1DT_copy;
}
else
{
//MainSearchResult가 ""이 아니면 일치하는 데이터 찾는 코드
foreach (DataRow row in form1DT_copy.Rows)
{
linq_row = from item in row.ItemArray
where item.ToString().ToLower().Equals(MainSearchResult.ToLower())
select row;
//입력된 값이 완전히 일치하는지 확인
foreach (DataRow dt in linq_row)
{
form1DT_re.Rows.Add(dt.ItemArray);
}
//linq 결과를 datatable에 넣어주는 작업
}
//입력된 값이 부분적으로 일치하는 경우
if(form1DT_re.Rows.Count== 0)
{
foreach (DataRow row in form1DT_copy.Rows)
{
linq_row = from item in row.ItemArray
where item.ToString().ToLower().Contains(MainSearchResult.ToLower())
select row;
//입력된 값이 부분적으로 일치하는지 확인
foreach (DataRow dt in linq_row)
{
form1DT_re.Rows.Add(dt.ItemArray);
}
}
}
form1DT_re = form1DT_re.DefaultView.ToTable(true);
form1._dgv.DataSource = form1DT_re;
}
}
#endregion