Effiziente DataGridView -Filterung mit Datensatz: Ein direkter DataTable -Ansatz
Filterung einer mit einem DataTaset verknüpften DataGridView, die mit einem DataTable verknüpft ist, ist eine eindeutige Herausforderung. Im Gegensatz zu Szenarien, in denen das DataTable direkt gebunden ist oder eine BindingSource verwendet wird, aktualisiert die Änderung der RowFilter
-Datenatable -Eigenschaft die Anzeige der DataGridView nicht automatisch.
Diese Einschränkung beruht auf der Art und Weise, wie die DataGridView Datasets übernimmt. Wenn das DataSource
ein Datensatz ist, schreibt die DataMember
Eigenschaft vor, welche DataTable angezeigt wird. Das Ändern des RowFilter
eines von DataMember
nicht angegebenen Datentabels hat keinen sichtbaren Effekt auf das Netz.
Die Lösung beinhaltet den direkten Zugriff auf und manipuliert auf die richtige DataTable:
<code class="language-csharp">private void textBox1_TextChanged(object sender, EventArgs e) { DataSet ds = (DataSet)dataGridView1.DataSource; DataTable dt = ds.Tables[dataGridView1.DataMember]; dt.DefaultView.RowFilter = string.Format("country LIKE '%{0}%'", textBox1.Text); }</code>
Dieser Code -Snippet ruft das aktive DataTable mithilfe der Eigenschaft von DataGridView ab und wendet dann den Filter auf seine DataMember
an. Dies aktualisiert direkt die Anzeige des DataGridView, ohne eine Änderung der Eigenschaft DefaultView
zu ändern. DataSource
zu einem Datensatz umzubiegen, um die Kompatibilität mit vorhandenem Code zu gewährleisten. DataSource
Das obige ist der detaillierte Inhalt vonWie filtert ich eine DataGridView, die an einen Datensatz gebunden ist, ohne ihre Datenquelle zu ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!