How to implement AND search using FlexGridSearchPanel in FlexGrid
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();
}
}
}