I want to perform a filter on a DataGridView
using 3 different TextBox
.
The solution below works, but does not consider very effective and good. Is there a way to improve it?
private void textBoxCod_TextChanged(object sender, EventArgs e)
{
Filter();
}
private void textBoxArt_TextChanged(object sender, EventArgs e)
{
Filter();
}
private void textBoxDesc_TextChanged(object sender, EventArgs e)
{
Filter();
}
private void Filter()
{
string queryFilter = "1=1"; //With this we avoid to check if there is the AND in the query
var filterCod = textBoxCod.Text;
var filterArt = textBoxArt.Text;
var filterDescr = textBoxDesc.Text();
if (filterCod != "")
queryFilter += " AND product_code LIKE '%" + filterCod + "%'";
if(filterArt != "")
queryFilter += " AND article LIKE '%" + filterArt + "%'";
if (filterDescr != "")
queryFilter += " AND description LIKE '%" + filterDescr + "%'";
bSource.Filter = queryFilter;
dataGridView.DataSource = bSource;
}
Before I used the string.Format
but I realized that not having optional parameters could not combine several filters.