2017-03-01 2 views
1

Ich möchte wissen, wie ich mit dem BindinSource.Filter suchen kann. Ich habe meinen Code wie diesen Suche.Filter = string.Format("{0} = '{1}'", "ID", ergebnis); ergebnis ist mein Array mit allen IDs meiner Kontakte. Nun ich alle Kontakte mit der gleichen ID anzeigen möchten in der DGVC# Filter DataGridView mit den Werten von Array

Sourcecode

Antwort

0

Dies ist, wie ich es gelöst:

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

Ich kopiere einfach den Inhalt des DataGridView zu einem neuen DataTable und Verwenden Sie Select, um alle Ergebnisse zu erhalten, die ich brauche. Ich habe dann eine neue DataSource für die GridView eingestellt.

Sie können den Originalinhalt des GridView in einem separaten DataTable speichern, um die Filterergebnisse zu löschen.

Natürlich müssen Sie dies außerhalb der for-Schleife tun.

0

Sie können einen Filter, indem sie die Ansicht anwenden und Ihr Array Herstellung einer Reihe von Objekten

ICollectionView view = CollectionViewSource.GetDefaultView(yourdatagridview); 
     view.Filter = FilterPerItem; 
     yourdatagridview.ItemsSource = view; 

In FilterPerItem Sie die Filterlogik hinzufügen

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

ich ein Ergebnis für meinen Code gefunden, danke Leute!

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