위의 그림처럼 검색에 해당하는 Row를 모아 DataGridView에 보여주기
DataTable과 연결된DataGridView는 프로그램 코드로 삽입,삭제를 못한다.
그래서 Table에 직접 해야 한다.
우선 Table 복사판을 만들고 일치 히지 않는 Row를 제거한후
DataGrid와 복사본을 연결 시키면 일치하는 Row만 있는 화면을 볼수 있다.
꼭 복사판에 작업해야 원본이 보존된다.
private void btSerch_Click(object sender, EventArgs e)
{
if (txtSerch.Text == "") return; // 빈값이면 return
int rowIndex = 0; // Row Index 첫번째 Row
DataTable tempDt= new DataTable(); // 검색결과를 저장할 Table
tempDt = dt.Copy(); // 현재 Table을 복사 단순 대입연산자는 주소를 복사하기 때문에 원본 손실됨
foreach( DataRow row in dt.Rows) // Row를 하나씩 가져옴
{
bool found = false;
foreach (object j in row.ItemArray ) // Column을 하나씩
if (j.ToString() == txtSerch.Text)
{
found = true; // 발견
break; // Column 검색에서 탈출
}
// 발견 못하면 해당 Row는 temDT에서 삭제
// 삭제된 자리에는 뒤Row가 온다. 그래서 Index증가가 필요없다.
if (!found) tempDt.Rows.RemoveAt(rowIndex);
else rowIndex++; // 발견하면 그대로 보존하고 다음 Row로 이동
}// Row를 하나씩 검색
dataGrid.DataSource=tempDt; // DataGrid에 연결하면 화면에 나타남
laIndex.Text = dataGrid.Rows.Count - 1 + "개 발견";
cbTable.Text = "검색결과";
} //func
'Tip !!! > C# tip' 카테고리의 다른 글
배열 늘리기 (0) | 2022.08.05 |
---|---|
DataGridView의 Row 갯수는? (0) | 2022.08.01 |
Table에 연결된 DataGridView Row 이동방법 (0) | 2022.08.01 |
DataGridView에서 선택된 Cell 처리 (0) | 2022.08.01 |
폼 닫기 취소 시키기 form closing cancel (0) | 2022.07.29 |