Then you want to allow end user to filter the results, but without hitting database again.
So you use a TextBox to prompt a filter an, OnTextChanged
private void tbFilter_TextChanged(object sender, EventArgs e) {
CurrencyManager cm = (CurrencyManager)BindingContext[dgvList.DataSource];
cm.SuspendBinding();
foreach (DataGridViewRow r in dgvList.Rows) {
r.Visible = String.IsNullOrEmpty(tbFilter.Text) || r.Cells[1].Value.ToString().Contains(tbFilter.Text);
}
cm.ResumeBinding();
}
Here the difficulty is the use of a CurrencyManager.