Entwickler-Ecke
WPF / Silverlight - Datagrid Suche einbauen
peter876 - Fr 05.10.12 13:24
Titel: Datagrid Suche einbauen
Ich würde gerne eine Suchfunktion mit in den Datagrid einbauen bin bis jetz hier, leider wird die Spalte Name nicht gefunden kann mir jmd. helfen :)?
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53:
| using...
namespace WpfApplication10 { public partial class MainWindow : Window { public class Globals { public static string Connection = "Server=localhost;Database=data;Uid=root;Pwd=;"; } public MainWindow() { InitializeComponent(); FillDataGrid(); }
private MySqlDataAdapter sqlDataAdapter; private DataTable dataTable; private void FillDataGrid() { string ConString = "Server=localhost;Database=data;Uid=root;Pwd=;"; string CmdString = string.Empty; using (MySqlConnection con = new MySqlConnection(ConString)) { CmdString = "SELECT NName,Name,Street,EMail,MobileNo FROM Phonebook"; MySqlCommand cmd = new MySqlCommand(CmdString, con); sqlDataAdapter = new MySqlDataAdapter(cmd); dataTable = new DataTable("Phonebook"); sqlDataAdapter.Fill(dataTable); datagridview1.ItemsSource = dataTable.DefaultView; } }
private void UpdateDataGrid() { sqlDataAdapter.Update(dataTable); }
private void Button_Click(Object sender, EventArgs e) { DataTable db = new DataTable("Phonebook"); DataView view = new DataView(db); view.RowFilter = "Name LIKE '%" + this.TextBox6.Text + "%'"; datagridview1.ItemsSource = view; }
} } |
Ralf Jansen - Fr 05.10.12 13:41
Selbe Problem wie in dem anderen Case. Du erzeugst in der Click Methode eine neue Datatable und suchst in der. Du musst schon die DataTable benutzen die auch am Grid hängt und Daten enthält nicht irgendeine andere. Lösung ist ebenso wie im anderen Case mach aus der DataTable eine Klassenvariable und benutz die dann auch.
Es wäre vielleicht angebracht das du dir nochmal den Unterscheidung von Klasse und Instanz einer Klasse klarmachst bevor du was anderes versuchst.
peter876 - Fr 05.10.12 13:46
Danke jetz hab ich es auch gerafft das ich eine neue tabelle erzeuge und in der suche jetz funkt. es :)
kann ich auch suchen ohne eine tabelle anzuwählen ?
Ralf Jansen - Fr 05.10.12 13:52
Zitat: |
kann ich auch suchen ohne eine tabelle anzuwählen ? |
Häh? Denn Gedankengang solltest du mal erläutern. Das macht gerade fast genauso wenig Sinn wie die Frage 'Kann ich auch Suchen ohne zu sagen wonach ich Suche?'. Da kann man nur Antworten ja macht nur keinen Sinn.
peter876 - Fr 05.10.12 15:29
Sorry Tabelle war vl die falsche wortwahl richtig wäre vl oder besser wäre vl "Spalte" ich suche ja in der Spalte Name es soll aber auch die Spalte NNname berücksichtigt werden ?
Th69 - Fr 05.10.12 15:45
Du meinst eine Suche über mehrere Spalten?
Mit OR kannst du die Spalten verknüpfen:
C#-Quelltext
1:
| "Name LIKE '%" + this.TextBox6.Text + "%'" + " OR " + "NName LIKE '%" + this.TextBox6.Text + "%'"; |
Fortgeschrittenere Programmierung wäre das Erzeugen einer Methode, welche über alle Spalten der
DataTable iteriert und daraus dann den
RowFilter erzeugt.
P.S. Unter
DataColumn.Expression [
http://msdn.microsoft.com/de-de/library/system.data.datacolumn.expression%28v=vs.80%29.aspx] findest du weitere Infos über den Aufbau des
RowFilter.
Ralf Jansen - Fr 05.10.12 15:46
Dann deinen RowFilter 2mal schreiben (bzw. je Spalte) und OR verknüpfen.
peter876 - Fr 05.10.12 18:26
alles klar ich danke für die mühe :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!