Call for Papers ASP-konferenz SDS

die ppedv AG veranstaltet am 22.-23. Juni eine Sharepoint Konferenz mit speziellen Fokus auf Developer. Ort ist Burghausen. (Sharepoint Development Special). Es wird 2 Tracks geben. Track 1 adressiert erfahrene ASP.NET Entwickler  ohne Sharepoint Kenntnisse. Track 2 gilt dem Sharepoint Entwickler auf der Such nach Detaillösungen, vertiefende Inhalte, Tipps und Tricks, Connectivity, Team Entwicklung und ähnliches. Session Vorschläge können per Mail an [asp AT ppedv.de] eingereicht werden. Session Dauer ist 60 Minuten. Weitere Infos demnächst auf www.asp-konferenz.de

404 er- ich hab nichts gemacht

Eine Leser meines Bucht ASP.NET Crash Kurses 2.0 macht mich darauf aufmerksam das die Code Samples nicht mehr zu finden sind. Nun habe ich die Website www.preishuber.net vor Jahren ( 2006) gemacht, getestet und vergessen. Alles ging und ich hab nichts gemacht. Also Remote Desktop auf und in die Konfig vom Server geschaut- Hilfloses rumgeclicke ( 1ter Fehler). Dann Fehler erkannt und in Log geschaut. ( könnte in Windows/systems32/inetsrv/log liegen) Rejected-By-UrlScan ~/asp.net2.0crashkursv2/default.aspx 80 URL Scan ist also der böse, kann mich gar nicht erinnern das mal installiert zu haben. Vermutlich der Windows Update Service (Schuld sind prinzipiell die anderen). Also was ist los. Dazu Logfile des URL Scan Utilitys gecheckt. ( findet sich unter C:\WINDOWS\system32\inetsrv\urlscan\logs) 9-03-05 09:36:00 91.65.128.29 999999999 GET /asp.net2.0CrashKursV2/ Rejected URL+contains+dot+in+path URL - - Ahja. Kann man ja ändern in der Datei Urlscan.ini (eine Ebene höher als die logs) AllowDotInPath=1     Die Frage soll man das ändern? Könnte ja ein Sicherheitsrisiko im IIS darstellen. Auf der anderen Seite gibts sicher Linkverweise und Suchmaschinen indizierungen. Muss jeder selbst entscheiden.

IIS 7 Module Icon

Für meinen Workshop Advanced IIS Development auf der VSone entwickeln wir Erweiterungen für die IIS 7 Admin Oberfläche. Man findet zwar in Büchern und der Doku wie man so einen Module Provider entwickelt, aber nie wie man das Anzeige Symbol ändert.   Vermutlich wird das als allgemein Wissen vorrausgesetzt. Zunächst erstellt man ein Icon im Visual Studio Projekt. Dann wird dieses als eingebette Ressource definiert. Im UIModule wird dann die UIPage instanziert. Dort werden 2 Parameter übergeben: für das ICON im  16x16 und 32x32 Format. In Intellisense wird als Aufruf  Typ (ModulePageInfo) für den Icon Parameter Object angezeigt. Zur Laufzeit wird allerdings Image erwartet. Typ Icon erzeugt einen Laufzeit Fehler. Also muss das Icon in Object Typ Bitmap (Basisklasse Image) geladen werden. Dim icon1 As New Bitmap(Me.GetType, "ppedv.ico") Dim modulePageInfo As New ModulePageInfo(Me, GetType(firstui.Dialog1UiPage), "Hannes Test", "Hannes Test 2", icon1, icon1) .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

RGB benannte Farbschemas als Tabelle

gerade für Silverlight gesucht: eine Tabelle die die möglichen Farben darstellt. In Silverlight kann man durch vorstellen eines 4ten Wertes die Transparenz (aplha blending) einstellen und das geht nun mal mit “Red” nicht. Mit “#FFFF0000” allerdings schon. http://msdn.microsoft.com/en-us/library/system.windows.media.brushes.aspx

Bilder dynamisch nachladen in Silverlight 2

Bilder werden oft in das Silverlight Projekt eingebettet. Damit vergrößert sich aber das XAP Paket das der Benutzer im Hintergrund downloaded. Im XAP Paket befinden sich die Programmlogik, zusätzliche DLL’s wie für Datagrid und Resourcen wie Bilder und Videos. Je größer das ganze desto länger dauert der Download und umso länger muss der Benutzer warten. Man kann aber Bilder und auch Videos recht einfach auslagern und bei Bedarf nachladen. Folgendes Beispiel verwendet die Klasse Webclient. Der Download erfolgt mit Openreadcompleted das einen Stream liefert. Da Silverlight nur asynchrone Connections unterstützt wird noch ein Callback (hier fertig genannt) definiert. Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Dim req As New WebClient AddHandler req.OpenReadCompleted, AddressOf fertig req.OpenReadAsync(New Uri("ppedv.jpg", UriKind.Relative)) End Sub .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Wenn der Download fertig ist wird die Funktion angesprungen. Das Ergebnis erhält man als Stream. Diesen übergibt man einem Bitmap Objekt und weist es dann einen Silverlight Image Control ( hier image1) zu. Public Sub fertig(ByVal sender As Object, ByVal e As OpenReadCompletedEventArgs) Dim st As Stream = e.Result Dim img As BitmapImage = New BitmapImage() img.SetSource(e.Result) image1.Source = img End Sub .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

Developer, Developer, Admins 11.-12 Feb Mnchen

Gleich 6 Konferenzen laufen vom 11.12.Feb mitten in München. Sharepoint Konferenz ASP-Konferenz SQL days Konferenz ADC Track Business Compact VSone Nur noch bis Freitag gibts die Early Bird Rate zum vergünstigten Preis. Wir die Content Owner haben uns wirklich ein paar Super High Lights einfallen lassen. Keynote by Chris Sells. Gemeinsam mit Don Box gehört er zu den Architekten von Oslo und ist eine Software Legende. Ingo Rammer hält seinen sensationellen Debugging Vortrag über 2 Slots. Nationale Legenden wie Neno Loje, Ralf Westphal, Bernd Marquardt präsentieren zahlreiche Themen. Sämtliche MVP’s für Sharepoint sind mit dabei. In über 80 Sessions ist für Einstieg bis Superprofi von Admin bis Developer ein volles Programm geboten. Im “Business Compact” wird in knackigen 25 Minuten Sessions neueste Microsoft Technologie und Nutzen auf Entscheider Niveau präsentiert. Content Owner Carsten Humm (Microsoft) stellt da einzigartiges Programm zusammen. Dieser Track kann zusammen mit der Fachausstellung für nur € 49,- gebucht werden. Die Fachausstellung ist mitten in München am Deutschen Museum und wird u.a. auch mit Exponaten wir dem berühmtesten Tisch Microsoft Surface aufwarten oder andere Gimicks wie Microsoft Roundtable. Mit dabei ist auch Microsoft als Aussteller. Das erste mal ist auch Torsten Weber dabei. Und bei allen anderen der unzähligen Experten- sorry das ich euch hier nicht erwähnt habe. Natürlich werde auch ich und ein paar meiner Kollegen aus dem ppedv Team Blog anwesend sein und mit hoffentlich spannenden Sessions. Ein weiteres High Light sind die Workshops vor und nach der Konferenz. Fabian Moritz hält einen Tag Sharepoint Search optimization. Torsten Krohek gibt von Morgens bis Abends Infos zu Datawarehousing mit SQL Server und ppedv legt einen gratis SQL Server 2008 für jeden Teilnehmer oben drauf! Karsten Samaschke wird einen Einstieg in Test Driven Development liefern. Stefan Lieser hat sich für seinen Workshop Software Design Principles vorgenommen aus euch bessere Developer zu machen. Ein wenig ALT.NET und Open Space gibt in 6 moderierten Blöcken von Mario Meir-Huber. Interessierte können sich am Whiteboard jeweils zu bestimmten Zeiten und Themen zusammen finden. Ich hoffe wir sehen uns!

Aktennotiz: Live Maps PIN per Link setzen

Da ich ja religöser Anhänger der Microsoft Sekte bin und meinen Teppich Richtung Redmond ausrolle, gibt es für mich nur einen Map Provider. Live Maps! Zwar kann man mit der Suche auch einen Hyperlink erstellen, aber der zeigt keine Nadel (Push Pin) mehr an der gefundenen Stelle. Dabei hätt ich schwören können, das ging schon mal. Nun mein Workaround. Adresse per Querystring Q Parameter übergeben in der Form Strasse Komma Postleitzahl Ort. Das ist unser Headquarter in Burghausen. http://maps.live.de/LiveSearch.LocalLive?mkt=de-de?q=Marktlerstr%2015b,%2084489%20Burghausen

im Browser Bilder drehen

aktuell unterrichte ich 2 Tage AJAX. Meine Teilnehmer fragen, ob es auch geht mit ASP.NET AJAX  ein Bild zu drehen. Leider gibt das AJAX Control Toolkit derartiges nicht her. Ich habe das hier exemplarisch für den Internet Explorer auf Basis von Filtern das implementiert. <script type="text/javascript"> function rotate(o, winkel) { rad = winkel * Math.PI * 2 / 360; costheta = Math.cos(rad); sintheta = Math.sin(rad); o.filters.item(0).M11 = costheta; o.filters.item(0).M12 = -sintheta; o.filters.item(0).M21 = sintheta; o.filters.item(0).M22 = costheta; } </script> <body> <div id="drehen1" style="position:absolute; filter:progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand')"> <img src="rot.png" /> </div> <input type="button" value="drehen" onclick="rotate(drehen1,30)"> .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Ist ja ein guter Anfang, aber nochh viel cooler gehts mit JQuery. Allerdings braucht man zusätzlich ein Plugin wie JQuery rotate. Dann sollte es auch in anderen Browsern als IE funktionieren. Mit  folgende Zeilen Code drehen wir um 23° das JQuery Bild. <img id="ppedv" src="logo_jquery_215x53[1].gif" /> <script language="jscript"> $(document).ready(hannes2); function hannes2() { $("#ppedv").rotateRight(23); } </script> .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }das ganze sieht dann so aus, voll cool!

Tooltipp in Silverlight 2

Das Tooltip Property werden Sie vergeblich suchen. Tooltips sind in Silverlight eigene Steuerelemente. Entsprechend erfolgt die Zuweisung auch nicht vom Control sondern vom Tooltip aus. Dazu exisitert eine TooltipService Klasse. ToolTipService.SetToolTip(TextBox1, "hallo tip!") Ein Tooltipp kann aber wesentlich mehr als Text enthalten. Im wesentlich alles an Controls was z.B. ein Panel auch enthalten könnte. einzig die Events von darin enthalten Controls ( wie zb Button) werden nicht gefeuert. Wenn ein Tooltip per XAML erzeugt wird, muss innerhalb des Ziel Controls der TooltipService deklariert werden. <TextBlock Margin="8,8,16,16" Grid.Row="2" Text="Firma" x:Name="TextBox1"/> <TextBlock Margin="8,8,16,16" Grid.Row="3" Text="Telefon"> <ToolTipService.ToolTip> <ToolTip Content="Ich bin ein tooltipp!" > </ToolTip> </ToolTipService.ToolTip> </TextBlock> .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Statt den Text per Content zuzuweisen, kann man als Subelement des Tooltip Elements aufwändigeres Design realisiert werden. So kann man ein Bild ein Rufzeichen hinzufügen. Es geht aber auch in einer Kurzform per Attribut einen Tooltip zu erzeugen. <Button ToolTipService.ToolTip="Click me" /> .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Als wichtige Events des Tooltip Elements möchte ich hier noch opened und closed erwähnen. Eine Verzögerung in der Darstellung des popups wie in WPF mit initalDelay ist nicht möglich.

Hintergrund abhngig von Wert formatieren im Silverlight Listview

Ein Anforderung könnte sein negative Werte in einer Tabelle rot darzustellen. Ich zeige wie man in einem Silverlight 2 Listview Control die Reihe (Zeile oder Row) den Hintergrund in der Farbe verändert. Gestuert wird das mit einer Checkbox in jeder Row. Die Daten werden einfach generisch erzeugt und sind aber per Inotifypropertychanged Zwei Wege Bindungsfähig. Als Datenquelle dient eine Checkbox mit der die Daten zur Laufzeit geändert werden. Zur grafischen Anzeige wird ein Stackpanel verwendet dessen Hintergrund per Binding gebunden wird. <ListBox x:Name="lstFields" SelectionChanged="lstFields_SelectionChanged" > <ListBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal" x:Name="stack1" Background="{Binding checked,Converter={StaticResource srconverter}}"> <CheckBox x:Name="chkFields" IsChecked="{Binding checked, Mode=TwoWay}"></CheckBox> <TextBlock Text="{Binding daten}"></TextBlock> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox> .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Da die Checkbox nur true oder false enthalten kann und Farben von einem bestimmten Brush Typ sein müssen wird der Converter dazwischen geschalten. Zunächst wird in der Page eine Referenz auf die Applikation erstellt und mit dem so erhaltenen Namesraum (hier c) eine statische Ressource erzeugt die auf die Klasse MyConverter zeigt. Der Key srconverter wird im obigen XAML referenziert. ... xmlns:c="clr-namespace:SilverlightApplication1test" > <UserControl.Resources> <c:MyConverter x:Key="srconverter"></c:MyConverter> </UserControl.Resources> .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Nun fehlt nur noch der Converter der theoretisch umwandeln und rückumwandeln beherrscht. Aber da die Farbe nur eine einwege Datenbindung benötigt reicht folgender sehr einfacher Code. Public Class MyConverter Implements IValueConverter Dim brush1 As SolidColorBrush = New SolidColorBrush(Color.FromArgb(255, 100, 200, 255)) Dim brush2 As SolidColorBrush = New SolidColorBrush(Color.FromArgb(255, 200, 100, 155)) Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert Return IIf(value, brush1, brush2) End Function Public Function ConvertBack(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack Throw New NotImplementedException() End Function End Class .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } Das Interface IValueConverter stellt sicher das beide Methoden implementiert sein müssen.