Background:
How to implement AND search using FlexGridSearchPanel in FlexGrid
Steps to Complete:
1. Performing AND search means returning only those rows which contain all the words typed in the FlexGridSearchPanel. Here is the code snippet:
private void ApplyAndFilter() { string[] strArr = null; int count = 0; char[] splitchar = { ' ' }; if (c1FlexGridSearchPanel1.Controls[0].Text.Contains(" ")) { strArr = c1FlexGridSearchPanel1.Controls[0].Text.Split(splitchar); for (int row = 1; row < c1FlexGrid1.Rows.Count; row++) { int temp = 0; for (count = 0; count <= strArr.Length - 1; count++) { for (int col = 1; col < c1FlexGrid1.Cols.Count; col++) { string str = c1FlexGrid1[row, col].ToString().ToLower(); if (str.Contains(strArr[count].ToLower())) { temp++; break; } } } if (temp != 2) { c1FlexGrid1.Rows[row].Visible = false; } } } }
2. Call above implemented method on Search Button’s Click of FlexGridSearchPanel.
var searchButton = c1FlexGridSearchPanel1.Controls[2] as ButtonBase; searchButton.Click += SearchButton_Click; private void SearchButton_Click(object sender, EventArgs e) { ApplyAndFilter(); }
3. Call above implemented method on pressing Enter key in FlexGridSearchPanel.
private void ComboSearch_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData == Keys.Enter) { if (c1FlexGridSearchPanel1.Controls[0].Text == "") { for (int row = 1; row < c1FlexGrid1.Rows.Count; row++) { c1FlexGrid1.Rows[row].Visible = true; } } else { ApplyAndFilter(); } } }