无法在System.Int32和System.String上执行“Like”操作。 DataGridView搜索和过滤

我有一个表单,当我从ComboBox中选择一个列名,并在文本框中键入它时,它会过滤并在DataGridView中显示搜索的条件。 当我搜索“引用”时,它是一个int数据类型,也是标识和主键。 我收到错误消息:

“无法在System.Int32和System.String上执行’Like’操作。”

我的代码是

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; } } 

将数字转换为filter内的字符串:

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

试试吧呢?

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

它可能只是一个缺少的引号,因为查询读作为

 " 123 like '%123%' " 

代码试图从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"); }