BindingSource.Find Methode

Definitie

Zoek het opgegeven item in de gegevensbron.

Overloads

Name Description
Find(PropertyDescriptor, Object)

Hiermee wordt gezocht naar de index van het item met de opgegeven eigenschapsdescriptor.

Find(String, Object)

Retourneert de index van het item in de lijst met de opgegeven eigenschapsnaam en -waarde.

Find(PropertyDescriptor, Object)

Bron:
BindingSource.cs
Bron:
BindingSource.cs
Bron:
BindingSource.cs
Bron:
BindingSource.cs
Bron:
BindingSource.cs

Hiermee wordt gezocht naar de index van het item met de opgegeven eigenschapsdescriptor.

public:
 virtual int Find(System::ComponentModel::PropertyDescriptor ^ prop, System::Object ^ key);
public virtual int Find(System.ComponentModel.PropertyDescriptor prop, object key);
abstract member Find : System.ComponentModel.PropertyDescriptor * obj -> int
override this.Find : System.ComponentModel.PropertyDescriptor * obj -> int
Public Overridable Function Find (prop As PropertyDescriptor, key As Object) As Integer

Parameters

key
Object

De waarde die prop moet worden vergeleken.

Retouren

De op nul gebaseerde index van het item met de opgegeven waarde voor PropertyDescriptor.

Implementeringen

Uitzonderingen

De onderliggende lijst is niet van het type IBindingList.

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u de Find methode gebruikt. Zie het onderwerp over het klassenoverzicht voor het volledige voorbeeld.

void button1_Click(object sender, EventArgs e)
{
    if (!binding1.SupportsSearching)
    {
        _ = MessageBox.Show("Cannot search the list.");
    }
    else
    {
        int foundIndex = binding1.Find("Name", textBox1.Text);
        if (foundIndex > -1)
        {
            listBox1.SelectedIndex = foundIndex;
        }
        else
        {
            _ = MessageBox.Show("Font was not found.");
        }
    }
}
    Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) _
        Handles button1.Click

        If binding1.SupportsSearching <> True Then
            MessageBox.Show("Cannot search the list.")
        Else
            Dim foundIndex As Integer = binding1.Find("Name", textBox1.Text)
            If foundIndex > -1 Then
                listBox1.SelectedIndex = foundIndex
            Else
                MessageBox.Show("Font was not found.")
            End If
        End If

    End Sub
End Class

Opmerkingen

Deze methode wordt doorgaans gebruikt in complexe gevallen van gegevensbinding om de eerste rij te vinden waarbij de waarde van het veld dat is opgegeven door de prop parameter gelijk is aan de waarde van de key parameter

Deze methode verwijst gewoon naar de aanvraag naar de methode van IBindingList.Find de onderliggende lijst. Als de onderliggende gegevensbron bijvoorbeeld een DataSet, DataTableof DataView, deze methode de DataView.IBindingList.Find methode aanroept. Het gedrag van IBindingList.Find, zoals de geretourneerde waarde als er geen overeenkomend item wordt gevonden, is afhankelijk van de implementatie van de methode in de onderliggende lijst.

Zie ook

Van toepassing op

Find(String, Object)

Bron:
BindingSource.cs
Bron:
BindingSource.cs
Bron:
BindingSource.cs
Bron:
BindingSource.cs
Bron:
BindingSource.cs

Retourneert de index van het item in de lijst met de opgegeven eigenschapsnaam en -waarde.

public:
 int Find(System::String ^ propertyName, System::Object ^ key);
public int Find(string propertyName, object key);
member this.Find : string * obj -> int
Public Function Find (propertyName As String, key As Object) As Integer

Parameters

propertyName
String

De naam van de eigenschap die moet worden gezocht.

key
Object

De waarde van het item met de opgegeven propertyName om te zoeken.

Retouren

De op nul gebaseerde index van het item met de opgegeven eigenschapsnaam en -waarde.

Uitzonderingen

De onderliggende lijst is geen IBindingList zoekfunctionaliteit die is geïmplementeerd.

propertyName komt niet overeen met een eigenschap in de lijst.

Voorbeelden

In het volgende voorbeeld ziet u hoe u de Find methode gebruikt met een DataView. Als u dit voorbeeld wilt uitvoeren, plakt u de code in een Windows Formulier en roept u PopulateDataViewAndFind aan vanuit de constructor van het formulier of Load gebeurtenisafhandelingsmethode. Het formulier moet de System.Xml en System.IO naamruimten importeren.

private void PopulateDataViewAndFind()
{
    DataSet set1 = new DataSet();

    // Some xml data to populate the DataSet with.
    string musicXml =
        "<?xml version='1.0' encoding='UTF-8'?>" +
        "<music>" +
        "<recording><artist>Coldplay</artist><cd>X&Y</cd></recording>" +
        "<recording><artist>Dave Matthews</artist><cd>Under the Table and Dreaming</cd></recording>" +
        "<recording><artist>Natalie Merchant</artist><cd>Tigerlily</cd></recording>" +
        "<recording><artist>U2</artist><cd>How to Dismantle an Atomic Bomb</cd></recording>" +
        "</music>";

    // Read the xml.
    StringReader reader = new StringReader(musicXml);
    set1.ReadXml(reader);

    // Get a DataView of the table contained in the dataset.
    DataTableCollection tables = set1.Tables;
    DataView view1 = new DataView(tables[0]);

    // Create a DataGridView control and add it to the form.
    DataGridView datagridview1 = new DataGridView();
    datagridview1.AutoGenerateColumns = true;
    this.Controls.Add(datagridview1);

    // Create a BindingSource and set its DataSource property to
    // the DataView.
    BindingSource source1 = new BindingSource();
    source1.DataSource = view1;

    // Set the data source for the DataGridView.
    datagridview1.DataSource = source1;

    // Set the Position property to the results of the Find method.
    int itemFound = source1.Find("artist", "Natalie Merchant");
    source1.Position = itemFound;
}
Private Sub PopulateDataViewAndFind() 
    Dim set1 As New DataSet()
    
    ' Some xml data to populate the DataSet with.
    Dim musicXml As String = "<?xml version='1.0' encoding='UTF-8'?>" & _
        "<music>" & _
        "<recording><artist>Coldplay</artist><cd>X&Y</cd></recording>" & _
        "<recording><artist>Dave Matthews</artist><cd>Under the Table and Dreaming</cd></recording>" & _
        "<recording><artist>Natalie Merchant</artist><cd>Tigerlily</cd></recording>" & _
        "<recording><artist>U2</artist><cd>How to Dismantle an Atomic Bomb</cd></recording>" & _
        "</music>"
    
    ' Read the xml.
    Dim reader As New StringReader(musicXml)
    set1.ReadXml(reader)
    
    ' Get a DataView of the table contained in the dataset.
    Dim tables As DataTableCollection = set1.Tables
    Dim view1 As New DataView(tables(0))
    
    ' Create a DataGridView control and add it to the form.
    Dim datagridview1 As New DataGridView()
    datagridview1.AutoGenerateColumns = True
    Me.Controls.Add(datagridview1)
    
    ' Create a BindingSource and set its DataSource property to
    ' the DataView.
    Dim source1 As New BindingSource()
    source1.DataSource = view1
    
    ' Set the data source for the DataGridView.
    datagridview1.DataSource = source1
    
    ' Set the Position property to the results of the Find method.
    Dim itemFound As Integer = source1.Find("artist", "Natalie Merchant")
    source1.Position = itemFound

End Sub

Opmerkingen

De Find methode kan alleen worden gebruikt wanneer de onderliggende lijst een IBindingList met zoekopdrachten is geïmplementeerd. Deze methode verwijst gewoon naar de aanvraag naar de methode van IBindingList.Find de onderliggende lijst. Als de onderliggende gegevensbron bijvoorbeeld een DataSet, DataTableof DataView, is, wordt deze methode geconverteerd propertyName naar een PropertyDescriptor en wordt de IBindingList.Find methode aangeroepen. Het gedrag van Find, zoals de geretourneerde waarde als er geen overeenkomend item wordt gevonden, is afhankelijk van de implementatie van de methode in de onderliggende lijst.

De eigenschapsnaamvergelijking is niet hoofdlettergevoelig.

Van toepassing op