Cannot perform "Like" operation on System.Int32 and System.String. Search and Filter DataGridView

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

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

My code

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(); sda.Fill(dt); dataGridView1.DataSource = dt; comboSearch.Items.Add("[Reference]"); comboSearch.Items.Add("[First Name]"); comboSearch.Items.Add("[Surename]"); comboSearch.Items.Add("[Address Line 1]"); comboSearch.Items.Add("[Address Line 2]"); comboSearch.Items.Add("[County]"); 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"); } else { searchTxt.ReadOnly = false; DataView dv = new DataView(dt); dv.RowFilter = "" + comboSearch.Text.Trim() + "like '%" + searchTxt.Text.Trim() + "%'"; dataGridView1.DataSource = dv; } } 
+6
source share
3 answers

Convert number to string inside filter:

 dv.RowFilter = string.Format("CONVERT({0}, System.String) like '%{1}%'", comboSearch.Text.Trim(), searchTxt.Text.Trim()); 
+10
source

Try it?

 dv.RowFilter = "'%" + comboSearch.Text.Trim() + "%' like '%" + searchTxt.Text.Trim() + "%'"; 

It might just be a missing quote, because the request reads like

 " 123 like '%123%' " 
0
source

The code tried to search from gridview (devexpress) ..

  DataRow[] dr = dt.Select("invoiceId ='" + Convert.ToInt32(gridView1.GetRowCellValue(id, "invoiceId")) + "' AND '%" + Convert.ToDouble(gridView1.GetRowCellValue(id, "Amount_Paid")) + "%' LIKE '%" + Convert.ToDouble(gridView1.GetRowCellValue(id, "Amount")) + "%' "); if (dr.Length > 0) { MessageBox.Show("already paid"); } 
0
source

All Articles