Laden...

Element aus einer, mit einer DataTable gefüllten, ListBox selektieren

Erstellt von tobias.billen vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.548 Views
T
tobias.billen Themenstarter:in
8 Beiträge seit 2018
vor 6 Jahren
Element aus einer, mit einer DataTable gefüllten, ListBox selektieren

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

P
1.090 Beiträge seit 2011
vor 6 Jahren

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:

Clean Code Developer
Entwurfsmuster
Anti-Pattern

T
tobias.billen Themenstarter:in
8 Beiträge seit 2018
vor 6 Jahren

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

16.807 Beiträge seit 2008
vor 6 Jahren

Das ist keine Fehlermeldung, was Du da zeigst, sondern ein Namespace.
Wie lautet denn die Fehlermeldung wirklich?

T
tobias.billen Themenstarter:in
8 Beiträge seit 2018
vor 6 Jahren

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