簡體   English   中英

使用TextBox過濾Datagridview行

[英]Filter Datagridview rows using TextBox

我有一個綁定的datagridView,我想使用TextBox值過濾它。

我用過這段代碼:

private void ChercheStextBox_TextChanged(object sender, EventArgs e)
    {
        try
        {
            ((DataTable)dataGridView3.DataSource).DefaultView.RowFilter = string.Format("LibService like '%{0}%'", ChercheStextBox.Text.Trim().Replace("'", "''"));
        }
        catch
        {

        }

    }

但是這個代碼不會過濾datagridView,即使我使用了相同的代碼

在另一個datagridView中,它完美地運行。 我不知道在哪里

我的代碼中有錯誤?

提前致謝。

編輯:

我刪除了try catch,我收到此錯誤消息:

無法將'system.windows.forms.bindingsource'類型的對象強制轉換為'system.data.datatable'

我該如何解決?

DataSource是一種BindingSource而不是DataTable,所以請嘗試以下代碼:

private void ChercheStextBox_TextChanged(object sender, EventArgs e)
    {
        var bd = (BindingSource)dataGridView3.DataSource;
        var dt = (DataTable)bd.DataSource;
        dt.DefaultView.RowFilter = string.Format("LibService like '%{0}%'", ChercheStextBox.Text.Trim().Replace("'", "''"));    
        dataGridView3.Refresh();


    }

我想你需要使用這個方法:

 public void ChercheStextBox_TextChanged(object sender, EventArgs e)
    {
          //NASSIM LOUCHANI
          BindingSource bs = new BindingSource();
          bs.DataSource = dataGridView3.DataSource;
          bs.Filter = string.Format("CONVERT(" + dataGridView3.Columns[1].DataPropertyName + ", System.String) like '%" + ChercheStextBox.Text.Replace("'", "''") + "%'");
          dataGridView3.DataSource = bs;

    }

您只需要使用Combobox來更改列號...只需使用您的想象力。

謝謝 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM