<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 

 

'Language > C#' 카테고리의 다른 글

[c#]treelistview 노드코드  (0) 2020.02.03
[C#] Datagridview 마지막 빈 행 지우기  (1) 2020.01.31
[C#] textbox keypress 이벤트  (0) 2020.01.30
[C#] LINQ 연습 1일  (0) 2020.01.30
[C#] DataTable max값을 포함한 row 조회  (0) 2020.01.21

+ Recent posts