微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C# System.Data.EvaluateException:“无法对 System.Int64 和 System.String 执行“Like”操作”我正在寻找解决您的错误的方法

如何解决C# System.Data.EvaluateException:“无法对 System.Int64 和 System.String 执行“Like”操作”我正在寻找解决您的错误的方法

当我在文本框中输入文本时,此方法有效。但是,当“else if”块运行时,它会给出我在标题中指定的错误。我该怎么做才能解决这个问题? 问题只发生在“else if”块中。此问题在其他 if、else 等块中不起作用。

        private void txt_Box_urun_ara_TextChanged(object sender,EventArgs e)
    {
        if (urun_isim_radio.Checked == true)
        {
            (tablo_urunler.DataSource as DataTable).defaultview.RowFilter = string.Format("UrunAdi LIKE '{0}%'",txt_Box_urun_ara.Text);
        }
        else if (urun_id_radio.Checked == true)
        {
            (tablo_urunler.DataSource as DataTable).defaultview.RowFilter = string.Format("UrunID LIKE '{0}%'",txt_Box_urun_ara.Text);
        }
        else {
            urun_isim_radio.Checked = true;
            (tablo_urunler.DataSource as DataTable).defaultview.RowFilter = string.Format("UrunAdi LIKE '{0}%'",txt_Box_urun_ara.Text);

        }

解决方法

根据您的代码,我重现了您的问题。我们可以使用Convert(ID,System.String) LIKE对int类型进行like操作。

我做了一个代码示例,你可以参考。

private void textBox1_TextChanged(object sender,EventArgs e)
    {
        if(radioButton1.Checked==true)
        {
            (dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("Convert(Adi,System.String) LIKE '{0}%'",textBox1.Text);
        }
        else if (radioButton2.Checked == true)
        {
            (dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("Convert(ID,textBox1.Text);
        }
    }
   
    private void Form1_Load(object sender,EventArgs e)
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Adi",typeof(int));
        dt.Columns.Add("ID",typeof(int));
        dt.Rows.Add(123,1001);
        dt.Rows.Add(124,1002);
        dt.Rows.Add(125,1003);
        dt.Rows.Add(135,1004);
        dt.Rows.Add(167,1101);
        dt.Rows.Add(196,1102);
        dt.Rows.Add(193,1103);
        dt.Rows.Add(186,1104);
        this.dataGridView1.DataSource = dt;
    }

结果:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。