参考链接:http://www.voidcn.com/article/p-pavzanbd-btm.html
使用DataTable.Select(string filterExpression),
或者DataView.RowFilter
设置过滤表达式
DataView dv = new DataView(dt);
dv.RowFilter = 列名称+” like ‘%” +查询内容 + “%’”;
dataGridView1.DataSource = dv;
或者 参考链接:https://blog.csdn.net/u010458948/article/details/102462169
string strTemp = “ like ‘%” + text + “%’” + “or like ‘%” + text + “%’”
+ "or *** like '%" + text + "%'" + "or *** like '%" + text + "%'";DataRow[] drArr1 = dt.Select(strTemp);DataTable dtNew = dt.Clone();for (int i = 0; i < drArr1.Length; i++){dtNew.ImportRow(drArr1[i]); //ImportRow 是复制}———————————————— 版权声明:本文为CSDN博主「蓝之赟」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/u010458948/article/details/102462169 当DataTable的列类型为Int类型时会出现: 无法在System.Int32和System.String上执行“Like”操作
需要改为:
dv.RowFilter = string.Format(“CONVERT({0}, System.String) like ‘%{1}%’”, 列名称, 查询内容);
原文:
c# – 无法在System.Int32和System.String上执行“Like”操作. DataGridView搜索和过滤
时间 2018-09-24 原文 https://stackoverflow.com/questions/22328392/cannot-perform-like-operation-on-system-int32-and-system-string-datagridview
我有一个表单,当我从ComboBox中选择一个列名,并在文本框中键入它时,它会过滤并在DataGridView中显示搜索的条件.当我搜索“引用”时,它是一个int数据类型,也是标识和主键.我收到错误消息: “Cannot perform ‘Like’ operation on System.Int32 and System.String.” 我的代码是 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;}}
将数字转换为过滤器内的字符串:
dv.RowFilter = string.Format(“CONVERT({0}, System.String) like ‘%{1}%’”,
comboSearch.Text.Trim(), searchTxt.Text.Trim());
