Benutzer mit den meisten Antworten
In BindingSource Zahlenspalte als Textspalte filtern

Frage
-
Hallo Leute,
ich stehe hier wieder echt auf dem Schlauch.
Ich habe ein Datagridview, eine BindingSource und ein BindingNavigator. Die Datentabelle kennt nur 2 Spalten, nach denen ich Filtern möchte. Dabei ist eine Spalte ein Integerwert, den ich aber nach String-Methode filtern möchte.
Private Sub FrmMailadressen_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'DGVMailadressen.DataSource = myDataSet.Tables(EnTables.Mailadressen) Bs_Mail.DataSource = myDataSet 'BindingSource Bs_Mail.DataMember = myDataSet.Tables(EnTables.Mailadressen).ToString Bn_Mail.BindingSource = Bs_Mail 'BindingNavigator DGVMailadressen.DataSource = Bs_Mail End Sub
Bevor ich die BindingSource und BindingNavigator verwendet hatte, wurde das Datagridview mit der Dateset-Tabelle direkt bestückt, so dass ich für das Filtern, einfach eine Spalte "Search" eingefügt hatte, die ich als String definiert hatte. So konnte ich jetzt gleichzeitig für das Zahlenfeld (MandantNr) und das Textfeld (Mailadresse) suchen.
Private Sub ToolStripTxtSearch_Enter(sender As Object, e As EventArgs) Handles ToolStripTxtSearch.Enter
Dim filterField As String = ""
filterField = myDataSet.Tables(EnTables.Mailadressen).Columns(DGVMailadressen.CurrentCell.ColumnIndex).ColumnName
Try
_lastCol = DGVMailadressen.CurrentCell.ColumnIndex
myDataSet.Tables(EnTables.Mailadressen).Columns.Add("Search").Expression = "convert(" & filterField & ",'System.String')"
DGVMailadressen.Columns("Search").Visible = False
DGVMailadressen.CurrentCell = DGVMailadressen(_lastCol, 0)
Catch
End Try
End SubPrivate Sub ToolStripTxtSearch_TextChanged(sender As Object, e As EventArgs) Handles ToolStripTxtSearch.TextChanged myDataSet.Tables(EnTables.Mailadressen).DefaultView.RowFilter = String.Format("[{0}] LIKE '%{1}%'", "Search", ToolStripTxtSearch.Text.ToString) &
" Or " & String.Format("[{0}] LIKE '%{1}%'", "Mailadresse", ToolStripTxtSearch.Text.ToString)
End SubIch habe aber keine Ahnung, ob wie ich das mit einer BindingSource hingekomme.
Mein Ziel soll sein:
Suche nach: 0585
Gefunden:
MandantNr. Email
10000 test0585@gmx.de
10585 test_1@gmx.deMan soll also einfach ein Suchbegriff eingegeben und es soll über alle 2 Spalten nach Inhalt gesucht werden.
Ich hoffe, jemand hat eine Idee und kann mir hier weiterhelfen.
Vielen Dank im Voraus.
Gruß Ahmed
- Bearbeitet Ahmed Martens Donnerstag, 10. Oktober 2019 17:45
Antworten
-
Ich habe die Lösung gefunden.
Bs_Mail.Filter = String.Format("Convert({0},System.String) LIKE '%{1}%'", "MandantNr", ToolStripTxtSearch.Text.ToString) & " Or " & String.Format("[{0}] LIKE '%{1}%'", "Mailadresse", ToolStripTxtSearch.Text.ToString)
Damit wird eine Zahlenspalte in eine Textspalte konvertiert und kann nach Textkriterien gefiltert werden.
Like '31'
10031
31002
10312Die BindingNavigator wird ebenfalls damit automatisch aktualisiert.
Gruß A. Martens
- Als Antwort markiert Ahmed Martens Freitag, 11. Oktober 2019 16:03
Alle Antworten
-
Hallo Ahmed,
das hier sollte ein passendes Beispiel sein:
https://docs.microsoft.com/de-de/dotnet/api/system.windows.forms.bindingsource.filter?view=netframework-4.8
Für deine Fall sollte es etwa so aussehen:
Bs_Mail.Filter= " MandantNr. = 10000 or Eamil='test0585@gmx.de'";Grüße Alexander
-
Vielen Dank für die Info, aber das ist keine Lösung meines Problems.
Vielmehr benötige ich eine Zahlenspalte als Textspalte, damit ich darin nach Textkriterien (Like) filtern kann. In einem Datagridview konnte ich hierzu einfach eine Dummy-Spalte über Convert hinzufügen.
Kann ich eventuell ein Dataview dazwischen schalten und wenn ja, wie müssten dann die Verknüpfungen zwischen allen beteiligten Elementen aussehen, also BindingSource, BindingNavigator, DatagridView usw.)
Gruß A. Martens
-
Ich habe die Lösung gefunden.
Bs_Mail.Filter = String.Format("Convert({0},System.String) LIKE '%{1}%'", "MandantNr", ToolStripTxtSearch.Text.ToString) & " Or " & String.Format("[{0}] LIKE '%{1}%'", "Mailadresse", ToolStripTxtSearch.Text.ToString)
Damit wird eine Zahlenspalte in eine Textspalte konvertiert und kann nach Textkriterien gefiltert werden.
Like '31'
10031
31002
10312Die BindingNavigator wird ebenfalls damit automatisch aktualisiert.
Gruß A. Martens
- Als Antwort markiert Ahmed Martens Freitag, 11. Oktober 2019 16:03