无法在System.Int32和System.String执行“喜欢”操作。 DataGridView的搜索和过滤 [英] Cannot perform 'Like' operation on System.Int32 and System.String. DataGridView search and filter

查看:1154
本文介绍了无法在System.Int32和System.String执行“喜欢”操作。 DataGridView的搜索和过滤的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个表格,当我在文本框中选择从ComboBox列名和类型它过滤,并在DataGridView显示搜索到的标准。当我搜索参考,这是一个int数据类型,这也是身份和主键。我得到的错误消息:





无法执行喜欢上System.Int32和System.String操作。





我的代码是

 的DataTable dt的; 
私人无效searchForm_Load(对象发件人,EventArgs五)
{
的SqlCeConnection CON =新的SqlCeConnection(@数据源= | DataDirectory目录| \LWADataBase.sdf;);
SqlCeDataAdapter SDA =新SqlCeDataAdapter(SELECT * FROM customersTBLCON);
DT =新的DataTable();
sda.Fill(DT);
dataGridView1.DataSource = DT;
comboSearch.Items.Add([参考]);
comboSearch.Items.Add([名]);
comboSearch.Items.Add([Surename]);
comboSearch.Items.Add([地址行1]);
comboSearch.Items.Add([地址行2]);
comboSearch.Items.Add([县]);
comboSearch.Items.Add([邮编]);
comboSearch.Items.Add([联系电话]);
comboSearch.Items.Add([电子邮件地址]);


}


私人无效searchTxt_TextChanged(对象发件人,EventArgs五)
{
如果(comboSearch.SelectedItem = = NULL)
{
searchTxt.ReadOnly = TRUE;
MessageBox.Show(请选择一个搜索条件);
}



,否则
{
searchTxt.ReadOnly = FALSE;
DataView的DV =新的数据视图(DT);
dv.RowFilter =+ comboSearch.Text.Trim()+LIKE'%+ searchTxt.Text.Trim()+%';
dataGridView1.DataSource = DV;

}
}


解决方案

转换数量,在过滤器内的字符串:

  dv.RowFilter =的String.Format(CONVERT({0 },System.String)像'%{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执行“喜欢”操作。 DataGridView的搜索和过滤的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆