C#使用数组的值筛选DataGridView

C#使用数组的值筛选DataGridView,c#,datagridview,filter,bindingsource,C#,Datagridview,Filter,Bindingsource,我想知道如何使用BindinSource.Filter进行搜索。我的代码是这样的Suche.Filter=string.Format(“{0}='{1}'”,“ID”,ergebnis)ergebnis是我的数组,包含我联系人的所有ID。现在我想在DGV中显示具有相同ID的所有联系人 我就是这样解决的: private void filter(int selectedID) { DataTable dtFilter = new DataTable(); //speichere

我想知道如何使用BindinSource.Filter进行搜索。我的代码是这样的Suche.Filter=string.Format(“{0}='{1}'”,“ID”,ergebnis)ergebnis是我的数组,包含我联系人的所有ID。现在我想在DGV中显示具有相同ID的所有联系人


我就是这样解决的:

private void filter(int selectedID) {
    DataTable dtFilter = new DataTable();

    //speichere GridView zum Filtern
    dtFilter = (DataTable)this.grdMDT.DataSource;

    try {
        dtFilter = dtFilter.Select("ID = " + selectedID).CopyToDataTable();
        this.DGV.DataSource = dtFilter;
    }
    catch (Exception ex) {
        MessageBox.Show(ex.Message);
    }
}
我只需将
DataGridView
的内容复制到一个新的
DataTable
中,然后使用
Select
获得所需的所有结果。然后我为
GridView
设置了一个新的
DataSource

您可能希望将
GridView
的原始内容存储在单独的
DataTable
中,以清除筛选结果


当然,您需要在for循环之外执行此操作。

我就是这样解决的:

private void filter(int selectedID) {
    DataTable dtFilter = new DataTable();

    //speichere GridView zum Filtern
    dtFilter = (DataTable)this.grdMDT.DataSource;

    try {
        dtFilter = dtFilter.Select("ID = " + selectedID).CopyToDataTable();
        this.DGV.DataSource = dtFilter;
    }
    catch (Exception ex) {
        MessageBox.Show(ex.Message);
    }
}
我只需将
DataGridView
的内容复制到一个新的
DataTable
中,然后使用
Select
获得所需的所有结果。然后我为
GridView
设置了一个新的
DataSource

您可能希望将
GridView
的原始内容存储在单独的
DataTable
中,以清除筛选结果


当然,您需要在for循环之外执行此操作。

您可以通过获取视图并使数组成为对象数组来应用过滤器

ICollectionView view = CollectionViewSource.GetDefaultView(yourdatagridview);
        view.Filter = FilterPerItem;
        yourdatagridview.ItemsSource = view;
FilterPerItem
中添加过滤器逻辑

private bool FilterPerItem(Contact item)
    {
        int rightID = 1;
        if (item.ID == rightID)
        {
            return true;
        }
        else return false;
    }

通过获取视图并使数组成为对象数组,可以应用过滤器

ICollectionView view = CollectionViewSource.GetDefaultView(yourdatagridview);
        view.Filter = FilterPerItem;
        yourdatagridview.ItemsSource = view;
FilterPerItem
中添加过滤器逻辑

private bool FilterPerItem(Contact item)
    {
        int rightID = 1;
        if (item.ID == rightID)
        {
            return true;
        }
        else return false;
    }

我为我的代码找到了一个结果,谢谢大家

            try
            {
                int[] ergebnis = new int[20];
                var filterString = new List<string>();

                for (int i = 1; i < result.Length; i++)
                {
                    int j = Int32.Parse(result[i][12]);

                    ergebnis[i] = j;

                    filterString.Add(string.Format("{0} = '{1}'", "ID", j));
                }

                Suche.Filter = string.Join(" OR ", filterString);
                kitba();
            }
            catch (IndexOutOfRangeException ex)
            {
                Debug.WriteLine(ex);
            }
试试看
{
int[]ergebnis=新int[20];
var filterString=新列表();
for(int i=1;i
我找到了我的代码的结果,谢谢大家

            try
            {
                int[] ergebnis = new int[20];
                var filterString = new List<string>();

                for (int i = 1; i < result.Length; i++)
                {
                    int j = Int32.Parse(result[i][12]);

                    ergebnis[i] = j;

                    filterString.Add(string.Format("{0} = '{1}'", "ID", j));
                }

                Suche.Filter = string.Join(" OR ", filterString);
                kitba();
            }
            catch (IndexOutOfRangeException ex)
            {
                Debug.WriteLine(ex);
            }
试试看
{
int[]ergebnis=新int[20];
var filterString=新列表();
for(int i=1;i