Moin, habe ein kleines Problem... (code behind)
Ich habe 3 DatePicker. Von / Bis und Datum
Von/Bis und Datum müssen sich dabei einander ausschließen (nullen)
da beide in MySQL diesselbe Spalte filtern sollen.
Nur resultiert eine Änderung im Datepicker ja im SelectedDateChanged
Event.
Ich kann ja nicht in den Events der jeweiligen DP den/die anderen DP nullen.
Also habe ich es mit bool
's und if
's probiert - ich komme nicht auf'n Zeiger...
Ich kann dem MurksCode ja mal hier bei Bedarf posten.
Hatte ja nie eine Notwendigkeit so etwas konstruieren zu müssen
und leider gibt Google da auch nichts her.
"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein
Wenn du von SelectedDateChanged redest, bedeutet das du benutzt kein MVVM.
Damit wäre das kein problem.
[Artikel] MVVM und DataBinding
Alles andere ist nur frickelei
Nur um sicher zu gehen, dass ich das richtig verstanden habe:
Du hast 3 DatePicker: Von (nennen wir jetzt A), bis (B) und Datum (C).
A, B, und C verweisen auf denselben Datensatz in der Datenbank?
Konkretes Beispiel:
A (01.01.2021) , B (01.01.2021) , C (01.01.2021)
Ist das so gemeint?
Falls ja, dann mal folgende Fragen:
So ganz habe ich jetzt nicht verstanden, was du genau erreichen möchtest. Kannst du das was du vorhast genauer beschreiben?
Datum A und B sind Von und Bis
Datum C meint ein spezifisches Datum
Beide suchen in der selben Spalte
... WHERE datum > 'DateA' AND < 'DateB
... WHERE datum = 'DateC'
es sollte klar sein, das bei einer Abfrage A und B beide ein Datum haben müssen und C keines
und umgekehrt...
ist in MVVM kein Ding - da käme ich allein drauf, in CodeBehind jedoch...
"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein
es sollte klar sein, das bei einer Abfrage A und B beide ein Datum haben müssen und C keines
und umgekehrt...
Wie soll dann diese Anweisung funktionieren?
... WHERE datum > 'DateA' AND < 'DateB
... WHERE datum = 'DateC'
Denn wenn deine Daten hier keinen Wert haben, dann erhälst du eine Null-Exception. Oder sind deine DateTimes nullable? Aber dann wäre die ganze Abfrage ja Kokolores...
Ich denke mal, du wirst eine List<DateTime> benutzen, in der alle in Frage kommenden Daten enthalten sind. Dann hättest du so etwas wie
var resultDate = DateList.Where(d => d.Date > DateA && d.Date < DateB).FirstOrDefault();
Was ich absolut nicht verstehe ist, wie DatumC da ins Spiel kommt. Oder brauchst du hier einen zweiten Wert? Dann würdest du im Prinzip den obigen Linq-Code mit der Lambda-Expression eben noch mal anwenden:
[
var dateC = DateList.Where(d => d.Date == DateC).FirstOrDefault();
]
Kleine Anmerkung: FirstOrDefault macht hier natürlich nur Sinn, wenn du EIN bestimmtes Datum suchst, denn der Ausdruck wird dir genau das erste DAtum in der Liste, auf den die Lambdas verweisen zurückliefern. Ohne FirstOrDefault wirds ein IEnumerabel.
Hoffe, das hilft dir weiter,
Gruß
vorph