2017-03-01 44 views
1

我想知道如何使用BindinSource.Filter进行搜索。我有我的代码这样Suche.Filter = string.Format("{0} = '{1}'", "ID", ergebnis); ergebnis是我的阵列与我的联系人的所有ID。现在,我想显示具有相同ID的所有联系人在DGVC#筛选DataGridView与数组的值

Sourcecode

回答

0

这是我如何解决它:

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循环外执行此操作。

0

您可以通过获取视图,使您的数组对象

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; 
    } 
0

我发现结果为我的代码应用过滤器,多谢你们!

  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); 
      }