Hat man sich einmal durch die Features des Compact Framework gequält, kann man sich ins nächste Abtenteuer stürzen: das Deployment. Ich glaube, in kaum einem anderen Bereich stößt man derzeit auf so vielfältige Umgebungen und Voraussetzungen, unter denen die eigene Anwendung möglichst laufen soll. Wie ich mich da durchgekämpft habe, werde ich später zum Besten geben, jetzt überspringen wir mal einen Schritt.
Nehmen wir an wir haben unseren Installer fertig und wollen ihn nun testen - kaum ...
... kann auch ihre Schattenseiten haben. So z.B. meiner Meinung nach im Moment mit ASP.NET 2.0. Im November letzten Jahres vermutlich aus politischen Gründen als Final deklariert auf den Markt geschmissen, kommen jetzt nach und nach Erweiterungen, die insbesondere Ajax-Features betreffen, aber z.B. auch Bugfixes wie die zuletzt überall angepriesenen "ASP.NET 2.0 CSS Friendly Control Adapters", die heute bereits wieder zur Überarbeitung vom Netz genommen wurden - weil sie eben noch nicht ...
Merke: niemals den Haken bei "Cache ISAPI applications" entfernen ... endet böse in wilden Fehlermeldungen und Abstürzen des IIS bei ganz einfachen Seitenaufrufen. ...
Ich stand gerade vor der Aufgabe, jenachdem was in einer FormView im Edit-Modus in einer Auswahlbox für ein Status (von 1-4) gewählt wurde, eine Mail zu verschicken oder eben nicht.
Den aktuellen Wert der Auswahlbox bekommt man ja noch über FindControl - aber ich musste den ja mit dem Ursprungswert vergleichen, um eine richtige Fallunterscheidung machen zu können.
Dann bin ich mal die Event-Argumente durchgegangen, und siehe da: es finden sich zwei Collections "NewValues" und "OldValues", in ...
Damit ich es mir endlich einmal merke:
"Gelegentlich auch Ternär- oder Frageoperator genannt. Dieser Bedingungsoperator wählt basierend auf einem booleschen Ausdruck aus zwei Ausdrücken aus.int value = (x
In diesem Beispiel wird der Steuerungsausdruck (x
Quelle. ...
Man sollte sich beim Debuggen entscheiden, was man verwendet - Emulator oder PDA. Sonst kann es passieren, dass man wie ich gerade mehrfach, versucht, mit dem PDA-Stift auf dem Monitor rumzudrücken, und sich dann wundert, dass nichts passiert.
...
Was mich bisher davon abgehalten hatte, den Emulator zu benutzen, war die Tatsache, das der Speicher im Emulator begrenzt und eine Erweiterungskarte nur schwer einsteckbar war ;-) Da meine App alleine eine Datenbank mit einer Größe von 16 MB mitbringt, war das in meinen Augen also unbrauchbar.
Aber ich lag falsch - denn es gibt eine einfache Möglichkeit, den Speicher zu erweitern. Indem man nämlich im Emulator-Menü über File > Configure > General einen "Shared folder" festlegt. Dieser liegt ...
Wie das geht, habe ich mich heute abend gefragt. Die Lösung steht hier. Einziger Haken: die Ergebnisse sind zwar nun richtig hierarchisch sortiert, allerdings nicht auch alphabetisch in der jeweiligen Ebene. Evtl. kann man das via Views lösen, aus denen man sich die Daten holt. ...
Verdammte Axt!
Es sind dann doch immer die kleinen Dinge im Leben, die richtig nerven. Oder eben die versprochene 99,999-prozentige Zeitersparnis zunichte machen. An ein "AppendDataBoundItems" hab ich nämlich nicht gedacht ...
:-)
Update:
Damit es auch wirklich funktioniert, d.h. Updates und Inserts dann tatsächlich auch NULL in die Datenbank schreiben (in meinem Fall erforderlich), muss den Parametern noch
ConvertEmptyStringToNull="true"
mitgegeben werden. Und nicht vergessen ggf. in ...
Wie man beispielsweise in einem FormView-Control mit einer SelectBox arbeitet welche sich die Daten aus einer dritten DataSource holt und über einen Wert des aktuellen Datensatzes vorbelegt wird, habe ich bereits geschrieben.
Da wusste ich allerdings noch nicht, dass mir das noch Kopfzerbrechen bereiten würde. Denn in meinem konkreten Fall bilde ich mit dieser Vorgehensweise eine Child-Parent-Beziehung ab - über die Selectbox kann der übergerordnete Parent-Datensatz des aktuell ausgewählten ...