无法对 System.Int32 和 System.String 执行“Like"操作.DataGridView 搜索和过滤 [英] Cannot perform 'Like' operation on System.Int32 and System.String. DataGridView search and filter
本文介绍了无法对 System.Int32 和 System.String 执行“Like"操作.DataGridView 搜索和过滤的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个表单,当我从 ComboBox 中选择列名并在文本框中键入时,它会过滤并在 DataGridView 中显示搜索条件.当我搜索Reference"时,它是一个 int 数据类型,它也是身份和主键.我收到错误消息:
<块引用><块引用>无法对 System.Int32 和 System.String 执行‘Like’操作."
我的代码是
DataTable dt;private void searchForm_Load(对象发送者,EventArgs e){SqlCeConnection con = new SqlCeConnection(@"Data Source=|DataDirectory|LWADataBase.sdf;");SqlCeDataAdapter sda = new SqlCeDataAdapter("select * from customersTBL", con);dt = 新数据表();sda.Fill(dt);dataGridView1.DataSource = dt;comboSearch.Items.Add("[参考]");comboSearch.Items.Add("[名字]");comboSearch.Items.Add("[姓氏]");comboSearch.Items.Add("[地址行 1]");comboSearch.Items.Add("[地址行 2]");comboSearch.Items.Add("[县]");comboSearch.Items.Add("[邮政编码]");comboSearch.Items.Add("[联系电话]");comboSearch.Items.Add("[电子邮件地址]");}private void searchTxt_TextChanged(对象发送者,EventArgs e){if (comboSearch.SelectedItem == null){searchTxt.ReadOnly = true;MessageBox.Show("请选择一个搜索条件");}别的{searchTxt.ReadOnly = false;数据视图 dv = 新数据视图 (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());
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();
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;
}
}
解决方案
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());
这篇关于无法对 System.Int32 和 System.String 执行“Like"操作.DataGridView 搜索和过滤的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文