user3237403 user3237403 - 1 year ago 70
C# Question

Cannot perform 'Like' operation on System.Int32 and System.String. DataGridView search and filter

I have a form that when I select a column name from a ComboBox, and type in a text box it filters and displays the searched criteria in the DataGridView. When I search for "Reference" which is an int data type, which is also identity, and primary key. I get the error message :

"Cannot perform 'Like' operation on System.Int32 and System.String."

My code is

DataTable dt;
private void searchForm_Load(object sender, EventArgs e)
SqlCeConnection con = new SqlCeConnection(@"Data Source=|DataDirectory|\LWADataBase.sdf;");
SqlCeDataAdapter sda = new SqlCeDataAdapter("select * from customersTBL", con);
dt = new DataTable();
dataGridView1.DataSource = dt;
comboSearch.Items.Add("[First Name]");
comboSearch.Items.Add("[Address Line 1]");
comboSearch.Items.Add("[Address Line 2]");
comboSearch.Items.Add("[Post Code]");
comboSearch.Items.Add("[Contact Number]");
comboSearch.Items.Add("[Email Address]");


private void searchTxt_TextChanged(object sender, EventArgs e)
if (comboSearch.SelectedItem == null)
searchTxt.ReadOnly = true;
MessageBox.Show("Please select a search criteria");

searchTxt.ReadOnly = false;
DataView dv = new DataView(dt);
dv.RowFilter = "" + comboSearch.Text.Trim() + "like '%" + searchTxt.Text.Trim() + "%'";
dataGridView1.DataSource = dv;


Answer Source

Convert the number to a string inside the filter:

dv.RowFilter = string.Format("CONVERT({0}, System.String) like '%{1}%'",
                             comboSearch.Text.Trim(), searchTxt.Text.Trim());
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download