Ich brauche Hilfe mit diesem Teil meines Codes. Ich versuche hier 2 Dinge zu tun:Löschen von Daten in einer ComboBox, die Daten gebunden ist
1. Ich brauche meine ComboBox cmbTechSearch gefüllt mit einer Liste von Namen aus einer SQL-Datenbank abgerufen. Diese Namen gehören zu einem Objekt namens Tecnico. So weit, so gut. Aber wenn ich zweimal auf die ComboBox klicke, bekomme ich die Namen doppelt ... Und so weiter. Hinzufügen von cmbTechSearch.Items.Clear(); löste es nicht, weil die Box Daten gebunden war und eine Fehlermeldung auslöste. Also habe ich hinzugefügt cmbTechSearch.DataSource = null; das löste die Fehlermeldung aber löschte meine Box nicht. Auch nicht CmBTechSearch.ResetText(); Im Moment bin ich mir nicht sicher, wie ich es löschen soll, damit die Daten nicht dupliziert werden, wenn ich wieder auf die Box klicke.
2. bringt diese aus der SQL-Datenbank abgerufene Liste mehr als nur den angehängten Namen. Es bringt auch eine E-Mail für jedes Objekt. Und ich kann nicht herausfinden, wie man die mit dem gewählten Namen auf dieser ComboBox verbundene E-Mail erhält. Wohlgemerkt, E-Mail ist eine globale String-Variable, da ich sie in anderen Methoden innerhalb des Codes verwende. Dieser Teil ist kommentiert, weil es nicht funktioniert.
public void TechSearch_loaded (object sender, EventArgs e)
{
// alle diese drei Einträge sind angeblich die comboBox cmbTechSearch löschen; alle von ihnen scheitern, aber wenn ich die erste Zeile entfernen bekomme ich eine Fehlermeldung, dass es bereits einige an die Box gebunden Daten (aber nur, wenn ich ein zweites Mal klicken)
cmbTechSearch.DataSource = null;
cmbTechSearch.Items.Clear();
cmbTechSearch.ResetText();
// eine Klasse namens Tecnico und Alle Informationen zu diesem Objekt werden in einer SQL-Datenbank gespeichert. Dieser Teil füllt eine Liste von Tecnicos mit Informationen aus der Datenbank.
List<Tecnico> tecnicos = new List<Tecnico>();
tecnicos = bd.ProcuraPerfisTipo("TEC");
// dann bekomme ich eine Liste von Tecnicos und Abrufen von einem Attribute (Nome) für jede tecnico in der Liste
List<String> TechSearch = new List<String>();
foreach (Tecnico obj in tecnicos)
{
TechSearch.Add(obj.Nome);
}
// schließlich bevölkere ich die comboBox mit den Informationen, die ich von der bekam Liste.
cmbTechSearch.DataSource = TechSearch;
//email = cmbTechSearch.ToString();
}
Es gibt eine Klasse mit dem Namen Tecnico, ein anderer namens BDTicketSQL und eine andere namens iBDTicketSQL (die erste, die SQL db Aufruf und Updates, Abfragen und Einsätze laufen, während die zweite für die Schnittstelle verwendet wird). Diese Klassen sind alle außerhalb dieser Form. Ich bekomme nur ein Datum von ihnen, um das Formular mit allen Informationen zu füllen, die ich brauche.
loszuwerden Danke für die Antwort. Das ist eine Menge zu verdauen ... Ich habe vergessen zu erwähnen, dass ich an Windows Forms arbeite. Macht das einen Unterschied? –
Nun ja. Weil du in WinForms kein xaml hast. Die Datenbindung muss also auf andere Weise erfolgen. Also für die Anwendung der Datenbindung verwenden https://stackoverflow.com/q/2251075/3766231 –
Ich habe nicht viel Erfahrung mit WinForms, aber ich werde versuchen, eine Probe für Sie zu bekommen. –