Hallo Zusammen,
ich habe eine Problem....
und zwar habe ich 2 Comboboxen deren Werte (aus eine SQL DB) abhängig von einander sind Beispiel:
ist in CB1 der das Projekt 1 gewählt werden in CB2 nur die Tests angezeigt die zu diesem Projekt gehören....
und anderstrum
also wenn in CB2 ein test gewählt wird sollen in CB1 nur die Projekte angezeigt werden die auch zu diesem Test gehören.
bisher bin ich soweit gekommen
private void cbProject_SelectedIndexChanged(object sender, EventArgs e)
{
project = cbProject.SelectedItem as Project;
dtpEndDate.Value = project.endDate.Value;
dtpStartDate.Value = project.startDate.Value;
setups = session.QueryOver<TestSetup>()
.OrderBy(ts => ts.testSetupName).Asc
.JoinQueryOver<Project>(ts => ts.Projects)
.Where(p => p.id == project.id)
.List();
;
cbSetUp.Items.Clear();
cbSetUp.Items.AddRange(setups.ToArray());
}
private void cbProject_Format(object sender, ListControlConvertEventArgs e)
{
project = e.ListItem as Project;
if (project == null)
return;
e.Value = project.projectName + " " + project.jobNumber;
}
private void cbSetUp_Format(object sender, ListControlConvertEventArgs e)
{
testSetUp = e.ListItem as TestSetup;
if (testSetUp == null)
return;
e.Value = testSetUp.testSetupName +" "+ testSetUp.setupNumber;
}
private void cbSetUp_SelectedIndexChanged(object sender, EventArgs e)
{
TestSetup ts = cbSetUp.SelectedItem as TestSetup;
projects = session.QueryOver<Project>()
.OrderBy(p => p.projectName).Asc
.JoinQueryOver<TestSetup>(p => p.TestSetups)
.Where(p => p.id == ts.id)
.List();
;
cbProject.Items.Clear();
cbProject.Items.Add("");
cbProject.Items.AddRange(projects.ToArray());
cbProject.ValueMember = project.projectName;
CheckAllValues();
}
das Problem ist allerdings wenn ich in der einen CB was auswähle wird der der anderen wieder gelöscht....
also wähle i cb1 aus dann stehen in cb2 die richtigen Einträge zur Verfügung wähle ich in cb2 etwas aus wird der wert in cb1 wieder gelöscht.
Kann mir jemand helfen???
Vielen Dank schon mal
Hallo,
du clearst ja die jeweils andere ComboBox. Im Fall das dein Query nichts zurückliefert, bleben die halt dann leer.
Baka wa shinanakya naoranai.
Mein XING Profil.
Hallo Tommy111,
du meinst eine ständige unerwünschte endlose gegenseitige Beeinflussung? Das wäre eine Fall für [FAQ] Event nur bei Benutzeraktion auslösen, nicht bei programmtechnischer Änderung.
herbivore
Hallo,
du clearst ja die jeweils andere ComboBox. Im Fall das dein Query nichts zurückliefert, bleben die halt dann leer.
ja das muss ich machen da ich ja bevor in einer cb etwas ausgewählt ist in beiden ja alle möglichen auszahlen bereitstelle.... wenn dann eine cb gewählt ist muss ich die andere liste ja clearen und die neuen einträge einfügen wenn i das nicht mache habe i die einträge ja doppelt drin...
Hallo Tommy111
wenn i das nicht mache habe i die einträge ja doppelt drin...
Der ComboBox kann auch eine DataSource zugewiesen werden. Danach könntest du anstatt alle Items löschen und neu hinzufügen, einfach die Source filtern.
Beste Grüsse
Diräkt
Hallo Diräkt,
Hallo Tommy111
Der ComboBox kann auch eine DataSource zugewiesen werden. Danach könntest du anstatt alle Items löschen und neu hinzufügen, einfach die Source filtern.
das "klingt" gut 😃 hast du zufällig ein codebsp.???
Hallo Tommy,
such mal nach "BindingSource Filter"...
Ich hab das Problem so verstanden das es Schwierigkeiten macht das die CBs voneinander abhängig sind.
Sprich wenn er in CB1 ein Projekt wählt, kriegt er in CB2 die zugehörigen Tests gezeigt. Wählt er in CB2 jetzt einen der Tests zur Weiterarbeit wird ihm aber CB1 ungewollt wieder verändert, weil nicht unterschieden werden kann ob er jetzt einen Test auswählen will oder alle Projekte zu einem Test in CB1 anzeigen will.
Aber vlt hab ichs auch falsch verstanden 😃
Hallo scrabbl,
ja genau das ist mein Problem ...
die eine cb reagiert immer auf die andere aber wenn bei der einen mal was ausgewählt wurde solle das nicht mehr vom Programm geändert werden ... nur vom Benutzer
Dazu haben ich bereits oben eine Lösung genannt. Auch die anderen Nachfragen deuten darauf hin, dass das Problem eher bei [Hinweis] Wie poste ich richtig? Punkt 1.1.1 liegt. Natürlich ist es kein Problem sicherzustellen, dass bei einer Aktualisierung die neuen Einträge die alten Ersetzen statt einfach hinzugefügt zu werden. Zum Thema Codebeispiele siehe Punkt 4.