Zwei eigentlich triviale Dinge, die gerne untergehen und auch bei so manchem Entwickler, der schon einige Zeit mit ASP.NET arbeitet, unbekannt sind, sind die zwei "gespaltenen Persönlichkeiten" von Panel- und Label-Webcontrol.
Warum gespalten? Weil beide Controls jeweils zwei unterschiedliche HTML-Tags bzw. HTML-Tag-Kombinationen rendern können.
Panel-Control I
Das Panel rendert in allen aktuellen Browsern ein Div-Element. So wird aus
<asp:Panel id="MyPanel" ...
Wird das UpdatePanel eingesetzt, funktioniert Page.SetFocus(); nicht mehr, um den Fokus auf ein Formularelement zu setzen. Stattdessen kann
ScriptManager.GetCurrent(Page).SetFocus(TextBoxXYZ);
verwendet werden. ...
Benutzt man das fertige AutoComplete-Extender-Control, kann man es sich aussuchen, ob man die Daten über einen Webservice holt, oder aus einer lokalen Methode.
Wichtig: benutzt man das Control in einem UserControl, muss sich für letzteren Fall diese Methode scheinbar zwingend im übergeordneten WebForm (.aspx) befinden, sonst wird sie nicht aufgerufen.
Langsam aber sicher kann ich mich des Eindrucks nicht mehr erwehren, dass hier trotz langer Betaphase einiges mit der heißen Nadel gestrickt ...
Angenommen man hat im "Accordion" drei verschiedene "Panes" - eines, welches man immer anzeigt, eines für Fehlermeldungen und eines für Erfolgsmeldungen.
Letztere sind also standardmäßig ausgeblendet. Will man nun den SelectedIndex für die Panes festlegen, muss man aufpassen: gezählt wird hier nur, was auch wirklich eingeblendet, d.h. visible=true ist, nicht was eigentlich an Objekten definiert ist!
Das heißt setzt man zu Beginn des Lifecycles die Panes 2 und 3 auf nicht ...
Es sind ja meistens die kleinen Dinge, die das Leben schöner machen. Oder einen Browser benutzbarer - gerade bin ich auf so ein Detail gestoßen. Ein via CSS mit "transform" in Großbuchstaben umgewandelter Text mit Sonderzeichen: Schließen.
Der Internet Explorer rendert das foldendermaßen:
Und Firefox?
Tja, da hat jemand mitgedacht ... ;-) ...
Ich habe gerade mal mit ZedGraph gespielt - damit kann man wirklich relativ einfach, schön und (mehr oder weniger) schnell Charts mit ASP.NET generieren. Die Einstellmöglichkeiten sind quasi unbegrenzt, auch von den vielen hässlichen Beispielen sollte man sich nicht blenden lassen - auch die Optik kann man zu annähernd 100% selbst bestimmen.
Via ...
In einem besonderen Fall habe ich hier gerade das Problem, dass die Verwendung eines UpdatePanels den Titel der Website im Browser zerschießt - und zwar unabhängig davon, welchen Browser man einsetzt (IE, Firefox, Opera - alles unter Vista).
Die Konstruktion ist etwas kompliziert, das Panel befindet sich in einem etwas tiefer verschachtelten UserControl - und hat absolut keine Besonderheiten, noch hat das Control irgendwelche Funktionalität bzgl. Page.Title. Ist das zufällig jemandem ...
Über Shrinkfile hatte ich ja schon einmal geschrieben, allerdings hat das in einem späteren Fall leider auch nichts gebracht - die Platte war voll, das Logfile riesig.
Was 100% funktioniert, ist das hier:
dbcc shrinkfile(xyz_log, 2)
backup log xyz with truncate_only
dbcc shrinkfile(xyz_log, 2)
Danach bleibt kaum mehr was über. xyz steht für den Namen der Datenbank, xyz_log für den Namen des verwendeten Logfiles. ...
Der Namespace System.Web.Profile beinhaltet wahrlich nicht viele Klassen, aber trotzdem kann er einen auf die Palme treiben - wenn man nämlich versucht herauszufinden, wie man ein blödes Benutzerprofil zu Fuß auslesen kann, und es ums Verrecken nicht findet.
Letztendlich hat sich die Hartnäckigkeit aber ausgezahlt. Die Zu verwendende Klasse lautet ProfileBase:
ProfileBase pb = ProfileBase.Create("UsernameXYZ");
Im Anschluss kann man über pb respektive die statischen Eigenschaften und ...
Man nehme an, man hat gerade eine Datei erzeugt und will diese nun automatisch mit der Standardanwendung öffnen lassen:
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "xyz.docx";
p.StartInfo.WorkingDirectory = @"D:\Temp";
p.Start(); ...