BindingSource.Find Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vyhledejte zadanou položku ve zdroji dat.
Přetížení
Find(PropertyDescriptor, Object) |
Vyhledá index položky, která má daný popisovač vlastnosti. |
Find(String, Object) |
Vrátí index položky v seznamu se zadaným názvem a hodnotou vlastnosti. |
Find(PropertyDescriptor, Object)
- Zdroj:
- BindingSource.cs
- Zdroj:
- BindingSource.cs
- Zdroj:
- BindingSource.cs
Vyhledá index položky, která má daný popisovač vlastnosti.
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
Parametry
- prop
- PropertyDescriptor
Hledaný PropertyDescriptor výraz.
- key
- Object
Hodnota, která se má shodovat prop
.
Návraty
Index položky založené na nule, která má danou hodnotu pro PropertyDescriptor.
Implementuje
Výjimky
Podkladový seznam není typu IBindingList.
Příklady
Následující příklad kódu ukazuje, jak použít metodu Find . Úplný příklad najdete v tématu s přehledem třídy.
private void button1_Click(object sender, EventArgs e)
{
if (binding1.SupportsSearching != true)
{
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
Poznámky
Tato metoda se obvykle používá ve složitých případech datových vazeb k vyhledání prvního řádku, kde se hodnota pole zadaného prop
parametrem rovná hodnotě parametru key
.
Tato metoda jednoduše odkazuje požadavek na metodu podkladového seznamu IBindingList.Find . Pokud je DataSetnapříklad podkladovým zdrojem dat , DataTablenebo DataView, tato metoda volá metodu DataView.IBindingList.Find . Chování IBindingList.Find, jako je například hodnota vrácená, pokud není nalezena žádná odpovídající položka, závisí na implementaci metody v podkladovém seznamu.
Viz také
Platí pro
Find(String, Object)
- Zdroj:
- BindingSource.cs
- Zdroj:
- BindingSource.cs
- Zdroj:
- BindingSource.cs
Vrátí index položky v seznamu se zadaným názvem a hodnotou vlastnosti.
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
Parametry
- propertyName
- String
Název vlastnosti, která se má vyhledat.
- key
- Object
Hodnota položky se zadaným propertyName
, který se má najít.
Návraty
Index položky od nuly se zadaným názvem vlastnosti a hodnotou.
Výjimky
Základní seznam není IBindingList s implementovanou funkcí vyhledávání.
propertyName
neodpovídá vlastnosti v seznamu.
Příklady
Následující příklad ukazuje, jak použít metodu Find s DataView. Chcete-li spustit tento příklad, vložte kód do formuláře Windows a zavolejte PopulateDataViewAndFind
ho z konstruktoru formuláře nebo Load metody zpracování událostí. Formulář by měl importovat obory System.Xml názvů a System.IO .
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
Poznámky
Metodu Find lze použít pouze v případech, kdy je základní seznam s implementovaným vyhledáváním IBindingList . Tato metoda jednoduše odkazuje požadavek na metodu podkladového seznamu IBindingList.Find . Pokud je DataSetnapříklad podkladovým zdrojem dat , DataTablenebo DataView, tato metoda převede propertyName
na PropertyDescriptor a zavolá metodu IBindingList.Find . Chování Find, jako je například hodnota vrácená, pokud není nalezena žádná odpovídající položka, závisí na implementaci metody v podkladovém seznamu.
Při porovnávání názvů vlastností se nerozlišují malá a velká písmena.