Hallo zusammen,
nach langem googlen konnte ich folgendes Problem nicht lösen:
Ich habe eine Listbox mit einer DataTable gefüllt (Code 1) und in dieser Liste suchen zu können, habe ich eine DataView erstellt (Code 2). Nun möchte ich gerne die Auswahl des Users abfangen. Wenn ich die Elemente direkt der ListBox hinzufüge, kann ich sie über den Select Befehl abgreifen. Dies möchte ich auch mit der DataTable tun. Ziel ist es:
int row = dtTools.SelectItem.Row
Gibt es eine Möglichkeit diesen Zeilenwert zubekommen?
Viele Grüße und Glückauf
Tobias
PS.: Der Code ist nur ein pseudo Code, der mein Wunsch verdeuchtlich soll. Der Klappt so natürlich nicht 😉
Code 1:
void addTools(){
dtTools = new DataTable();
dtTools.Columns.Add("Werkzeug", typeof(String));
tools = connect.Select("Select * From t_werkzeug order by f_key_tools");
foreach(List<String> tool in tools){
dtTools.Rows.Add(tool[3]);
}
lb_werkzeug_uebersicht.DataSource = dtTools;
lb_werkzeug_uebersicht.DisplayMember = "Werkzeug";
}
Code 2:
void Tb_werkzeug_sucheTextChanged(object sender, EventArgs e){
DataView dvTable = dtTools.DefaultView;
dvTable.RowFilter = "Werkzeug LIKE '%" + tb_werkzeug_suche.Text + "%'";
}
Res Servea Verum Gaudium
Schau dir mal den Artikel an c-sharpcorner.com:Programmatically Binding DataSource To ComboBox In Multiple Ways da sind Beispiele wie du das Selektierte Element bekommst.
Sollte man mal gelesen haben:
Vielen Dank für Deine Antwort.
Ich habe diese Lösungsansätze ausprobiert. Allerdings kann ich entweder nach Items in der Liste suchen oder ich kann ein Item aus der Liste selektieren.
Wenn ich nach einem Item in der Liste suchen kann, kommt sofort die Fehlermeldung:
System.Data.Data
Ich denke, dass dies nur ein Verweis auf die DataTable ist, oder?
Oder bin ich auf dem Holzweg?
Res Servea Verum Gaudium
Das ist keine Fehlermeldung, was Du da zeigst, sondern ein Namespace.
Wie lautet denn die Fehlermeldung wirklich?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ich bekomme diese Meldung immer dann, wenn ich folgendes Anzeige lasse:
l_test.Text = lb_werkzeug_uebersicht.SelectedValue.ToString();
Diese Zeile habe ich modifiziert von Palins Seitenvorschlag kopiert.
Edit: Problem gelöst ... Ich hatte Parameter falsch angeben. Richtig ist:
void addTools(){
dtTools = new DataTable();
dtTools.Columns.Add("Werkzeug", typeof(String));
tools = connect.Select("Select * From t_werkzeug order by f_key_tools");
foreach(List<String> tool in tools){
dtTools.Rows.Add(tool[3]);
}
lb_werkzeug_uebersicht.DataSource = dtTools;
lb_werkzeug_uebersicht.DisplayMember = "Werkzeug";
lb_werkzeug_uebersicht.ValueMember = "Werkzeug";
}
Res Servea Verum Gaudium