<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Skytecs Entwicklerblog &#187; .Net</title>
	<atom:link href="http://blog.skytecag.com/index.php/category/net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.skytecag.com</link>
	<description>Von Skytec für Entwickler - Informationen für Praktiker</description>
	<pubDate>Fri, 27 Jun 2008 08:53:46 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Sharepoint und die Downloads aus dem Web Part</title>
		<link>http://blog.skytecag.com/index.php/2008/04/10/sharepoint-und-die-downloads-aus-dem-web-part/</link>
		<comments>http://blog.skytecag.com/index.php/2008/04/10/sharepoint-und-die-downloads-aus-dem-web-part/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 14:08:07 +0000</pubDate>
		<dc:creator>Gregor Ottmann</dc:creator>
		
		<category><![CDATA[.Net]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Know-How]]></category>

		<category><![CDATA[c#]]></category>

		<category><![CDATA[gehirnverbiegung]]></category>

		<category><![CDATA[MOSS]]></category>

		<category><![CDATA[Sharepoint]]></category>

		<guid isPermaLink="false">http://blog.skytecag.com/index.php/2008/04/10/sharepoint-und-die-downloads-aus-dem-web-part/</guid>
		<description><![CDATA[Eigentlich ist die Anforderung ganz einfach und keineswegs unüblich: Man will auf einer Website irgendeine Datei dynamisch generieren, beispielsweise einen Excel-Report, die man dann per Klick auf einen Button zum Download anbietet. Sowas ist im Regelfall nicht schwer, außer natürlich, wenn man ein &#8220;Web Part&#8221; für Sharepoint baut. Wenn man das tut ist, wie ich [...]]]></description>
			<content:encoded><![CDATA[<p>Eigentlich ist die Anforderung ganz einfach und keineswegs unüblich: Man will auf einer Website irgendeine Datei dynamisch generieren, beispielsweise einen Excel-Report, die man dann per Klick auf einen Button zum Download anbietet. Sowas ist im Regelfall nicht schwer, außer natürlich, wenn man ein &#8220;Web Part&#8221; für Sharepoint baut. Wenn man das tut ist, wie ich inzwischen weiß, ziemlich vieles schwer, schmerzhaft und generell mehr oder weniger unbefriedigend.</p>
<p>An sich ist die Sache aj auch in ASP ganz easy und in vielen Blogposts beschrieben, beispielsweise bei den <a href="http://dotnetslackers.com/community/blogs/haissam/archive/2007/04/03/Downloading-Files-C_2300_.aspx">Dotnetslackers</a>. Das Problem ist nur, dass bei diesem Ansatz die Datei erst nach einem Postback generiert und an den Client geschickt wird, dieser Postback aber das momentan angezeigte Formular nicht neu vom Server lädt. Problem? Wieso Problem?</p>
<p>Ganz einfach: Sharepoint meint es gut mit uns und sorgt per JavaScript dafür, dass Formulare nicht öfter als einmal abgeschickt werden können, beispielsweise durch amokklickende Benutzer. Das führt dazu, dass nach dem Download der Datei das Formular hinüber ist, d.h. es nicht mehr abgeschickt werden kann, weil es ja schon mal abgeschickt wurde. Sehr blöde, und die Lösungen, von denen ich gelesen habe, waren allesamt extrem kompliziert zu implementieren, weil sie irgendwelche speziellen Download-Handler vorgesehen haben. Mensch, Leute, ich habe eine Deadline und nicht beliebig viel Budget - ich brauche eine EINFACHE Lösung. Meinetwegen auch einen kleinen Hack.</p>
<p>Einen solchen Hack habe ich dann auch hinbekommen. Diese Resubmit-Sperre wird von Sharepoint nämlich im onsubmit-Handler des Formulars aufgerufen, so dass man nur beim Klick auf den Downloadbutton genau diesen Handler wegschießen muss:</p>
<blockquote><p> exportButton = new Button();<br />
exportButton.Text = &#8220;Generate some Excel stuff&#8221;;</p>
<p>// the handler method generates the file, writes it to the response and ends the response.<br />
exportButton.Click += onExcelExportClicked;</p>
<p>// erase the form&#8217;s onsubmit handler when the button is clicked<br />
exportButton.OnClientClick = &#8220;this.form.onsubmit = function() {return true;}&#8221;;</p></blockquote>
<p>Hässlich, ja, und eventuell auch gefährlich, wenn man nicht aufpasst, aber es funktioniert. Die nächste Verbesserung wird sein, dass ich irgendwie nach dem Download den ursprünglichen onsubmit-Handler wieder herstelle oder so - aber das mache ich erst, wenn ich es brauche.</p>
<p><em>(Nur, falls irgendwer sich wundert: Das Posting mit dem identischen Codebeispiel im MSDN-Forum ist nicht geklaut, sondern auch von mir.)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.skytecag.com/index.php/2008/04/10/sharepoint-und-die-downloads-aus-dem-web-part/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Excelfiles einfach generieren mit Flexcel</title>
		<link>http://blog.skytecag.com/index.php/2008/04/10/excelfiles-einfach-generieren-mit-flexcel/</link>
		<comments>http://blog.skytecag.com/index.php/2008/04/10/excelfiles-einfach-generieren-mit-flexcel/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 06:46:07 +0000</pubDate>
		<dc:creator>Gregor Ottmann</dc:creator>
		
		<category><![CDATA[.Net]]></category>

		<category><![CDATA[ASP.NET]]></category>

		<category><![CDATA[Tools]]></category>

		<category><![CDATA[ASP]]></category>

		<category><![CDATA[Excel]]></category>

		<category><![CDATA[Generator]]></category>

		<category><![CDATA[Reporting]]></category>

		<guid isPermaLink="false">http://blog.skytecag.com/index.php/2008/04/10/excelfiles-einfach-generieren-mit-flexcel/</guid>
		<description><![CDATA[Eine Warnung vorweg: Die nachfolgende Toolempfehlung kostet Geld. Im Grunde ist das Teil zwar spottbillig, aber wenn man aus Prinzip nix benutzen mag, für das man seine $$$ auf den Tisch werfen muss, sollte man jetzt eine andere News lesen.
Also. Wir mussten neulich für einen Kunden Excel-Files erzeugen, und zwar total komplizierte. Das Ganze durfte [...]]]></description>
			<content:encoded><![CDATA[<p><em>Eine Warnung vorweg: Die nachfolgende Toolempfehlung kostet Geld. Im Grunde ist das Teil zwar spottbillig, aber wenn man aus Prinzip nix benutzen mag, für das man seine $$$ auf den Tisch werfen muss, sollte man jetzt eine andere News lesen.</em></p>
<p>Also. Wir mussten neulich für einen Kunden Excel-Files erzeugen, und zwar total komplizierte. Das Ganze durfte natürlich keine Excel-Installation auf dem Server voraussetzen, und CSV war definitiv keine Option, logo. Ein Fluch bildete sich schon auf unseren Lippen, als Paul ein Toolkit fand, das sich zur Rettung unserer Hinterteile in letzter Sekunde eignete: <a href="http://www.tmssoftware.com/site/flexcelnet.asp">TMS Flexcel Studio for .Net</a>.</p>
<p>Dieses Flexcel-Dings kann nicht nur beliebige Excel-Dateien einlesen, die darin enthaltenen Formeln berechnen, die Inhalte beliebig verändern und dann wieder eine Excel-Datei ausspucken. Nein, das wäre ja noch harmlos. Es enthält auch eine Reporting-Engine und kann Excel-Files als PDF oder HTML rendern, wobei Excel-Charts als PNG ausgegeben werden. Besonders geil ist das beiligende Tool, das eine beliebige Excel-Datei einlesen und daraus den Sourcecode in C#, VB oder Delphi generieren kann, den man bräuchte, um die Quelldatei programmatisch zu erzeugen&#8230; Das muss man echt mal gesehen haben.</p>
<p>Ach ja: Der Sourcecode der gesamten Komponente inklusive PDF-Library liegt bei, wenn man das Tool für sagenhaft günstige 125 EUR pro Entwickler kauft. Für 495 EUR gibt&#8217;s eine &#8220;Site Licence&#8221;, die dann von beliebig vielen Entwicklern einer Firma benutzt werden darf - da kann man nicht meckern. Insbesondere dann nicht, wenn man sich überlegt, wieviel eine Excel-Lizenz für den Server kosten würde. Oder die Eigenentwicklung so einer Killerkomponente.</p>
<p>Und nein, ich bin nicht zum reinen Microsoftie verkommen. Ich arbeite halt momentan mehr oder weniger ausschließlich mit dem Zeugs, hoffe aber darauf, irgendwann mal wieder was mit Java machen zu dürfen - und dann kriegt Ihr auch wieder Blogposts, die sich nicht um den MS-Krempel drehen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.skytecag.com/index.php/2008/04/10/excelfiles-einfach-generieren-mit-flexcel/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Confusion by Extension: Extensionsmethodierung im Scharf-C</title>
		<link>http://blog.skytecag.com/index.php/2008/03/17/confusion-by-extension-extensionsmethodierung-im-scharf-c/</link>
		<comments>http://blog.skytecag.com/index.php/2008/03/17/confusion-by-extension-extensionsmethodierung-im-scharf-c/#comments</comments>
		<pubDate>Mon, 17 Mar 2008 09:04:46 +0000</pubDate>
		<dc:creator>Gregor Ottmann</dc:creator>
		
		<category><![CDATA[.Net]]></category>

		<category><![CDATA[Know-How]]></category>

		<category><![CDATA[c#]]></category>

		<category><![CDATA[extension methods]]></category>

		<category><![CDATA[gehirnverbiegung]]></category>

		<guid isPermaLink="false">http://blog.skytecag.com/index.php/2008/03/17/confusion-by-extension-extensionsmethodierung-im-scharf-c/</guid>
		<description><![CDATA[Der einfachste Weg, um schönen Code komplett unverständlich zu kriegen, ist meiner Meinung nach definitiv AOP, d.h. aspektorientierte Programmierung. Diese total hippe Möglichkeit, um Code gewissermaßen um 90° versetzt zur Klassenhierarchie zu pflegen und mehr oder weniger deklarativ an Stellen einzubringen, mit denen man nicht gerechnet hätte, kann mit Fug und Recht als &#8220;das neue [...]]]></description>
			<content:encoded><![CDATA[<p>Der einfachste Weg, um schönen Code komplett unverständlich zu kriegen, ist meiner Meinung nach definitiv AOP, d.h. aspektorientierte Programmierung. Diese total hippe Möglichkeit, um Code gewissermaßen um 90° versetzt zur Klassenhierarchie zu pflegen und mehr oder weniger deklarativ an Stellen einzubringen, mit denen man nicht gerechnet hätte, kann mit Fug und Recht als &#8220;das neue GOTO&#8221; bezeichnet werden. Finde ich zumindest, und meine Meinung ist bekanntlich reichlich normativ.</p>
<p>Man kann sich also vorstellen, wie glücklich ich war, als ich gemerkt habe, dass Microsoft in C# mittlerweile eine spezielle Delikatesse namens &#8220;Extension Methods&#8221; anbietet. Das sind Methoden, die sich mehr oder weniger automatisch an Instanzen bestimmter Klassen hängen und so tun, als wären sie Teil der Klasse. Ja, das ist gewissermaßen AOP Deluxe: Die gesamte Verwirrung und Unverständlichkeit der AOP, nur nicht so mächtig wie AspectJ oder vergleichbare S/M-Technologien. Genial, das muss ich in Zukunft in jedem einzelnen Stück Code verwenden, von dem ich sicher weiß, dass es zukünftig nur von anderen gepflegt werden muss, nicht von mir selbst.</p>
<p>Ah, fast vergessen - einen Link gibt es ja auch noch: <a href="http://msdn2.microsoft.com/en-us/library/bb383977.aspx">Extension Methods bei MSDN</a>. Go and knock yourselves out.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.skytecag.com/index.php/2008/03/17/confusion-by-extension-extensionsmethodierung-im-scharf-c/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Von Typen mit Strings und assemblierter Sicherheit</title>
		<link>http://blog.skytecag.com/index.php/2008/02/10/von-typen-mit-strings-und-assemblierter-sicherheit/</link>
		<comments>http://blog.skytecag.com/index.php/2008/02/10/von-typen-mit-strings-und-assemblierter-sicherheit/#comments</comments>
		<pubDate>Sun, 10 Feb 2008 18:40:59 +0000</pubDate>
		<dc:creator>Gregor Ottmann</dc:creator>
		
		<category><![CDATA[.Net]]></category>

		<category><![CDATA[ASP.NET]]></category>

		<category><![CDATA[Know-How]]></category>

		<guid isPermaLink="false">http://blog.skytecag.com/index.php/2008/02/10/von-typen-mit-strings-und-assemblierter-sicherheit/</guid>
		<description><![CDATA[Picture it: Sicily, 1922. A beautiful young girl meets an american guy who wants to make every single developer in the world throw up continuously. The girl was me and the guy was Bill Gates&#8230;
So oder ähnlich denkt man, wenn man a) zuviele Folgen der Golden Girls gesehen hat und b) gerade mit .NET arbeitet. [...]]]></description>
			<content:encoded><![CDATA[<blockquote>Picture it: Sicily, 1922. A beautiful young girl meets an american guy who wants to make every single developer in the world throw up continuously. The girl was me and the guy was Bill Gates&#8230;</p></blockquote>
<p>So oder ähnlich denkt man, wenn man a) zuviele Folgen der Golden Girls gesehen hat und b) gerade mit .NET arbeitet. Zumindest dann, wenn man gerade folgende Situation hatte:</p>
<ul>
<li>Ein WebPart enthält einen GridView mit einer ObjectDataSource, die auf ein eigenes DAL verweist</li>
<li>Das Part funktioniert in ASP-Seiten</li>
<li>Das Part funktioniert im Sharepoint mit voller Pulle Trustlevel</li>
<li>Das Part fliegt mit einem Hinweis, dass die DAL-Klasse nicht gefunden wurde, auseinander, wenn man es im GAC installiert.</li>
</ul>
<p>Des Rätsels Lösung war ganz einfach, wenn man nur weiß, wo man suchen muss. Wir hatten diesen Code (den ich aus einem Tutorial kopiert hatte) im Part:</p>
<blockquote><p>ObjectDataSource ods = new ObjectDataSource();<br />
ods.EnablePaging = true;<br />
ods.SelectMethod = &#8220;getItems&#8221;;<br />
ods.SelectCountMethod = &#8220;GetTotalItemCount&#8221;;<br />
ods.SortParameterName = &#8220;sortExpression&#8221;;<br />
ods.TypeName = typeof(AreDal).ToString();</p></blockquote>
<p>Die letzte Zeile musste wie folgt geändert werden, damit das Mistding vernünftige Klassennamen mit Assembly-Namen und Public-Key-Dingsbums ausspuckt:</p>
<blockquote><p>ods.TypeName = typeof(AreDal).AssemblyQualifiedName;</p></blockquote>
<p>NA DANN! Wieso ist das ToString bei dem Mist eigentlich nicht gleich so implementiert, dass es ordentlich funktioniert? Kann mir das irgendwer verraten? Nein? Naja, auch egal, ich hab&#8217;s ja jetzt.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.skytecag.com/index.php/2008/02/10/von-typen-mit-strings-und-assemblierter-sicherheit/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SQL Server 2005, ein anderer Port und das Management Studio Express</title>
		<link>http://blog.skytecag.com/index.php/2008/01/24/sql-server-2005-ein-anderer-port-und-das-management-studio-express/</link>
		<comments>http://blog.skytecag.com/index.php/2008/01/24/sql-server-2005-ein-anderer-port-und-das-management-studio-express/#comments</comments>
		<pubDate>Thu, 24 Jan 2008 12:01:10 +0000</pubDate>
		<dc:creator>Gregor Ottmann</dc:creator>
		
		<category><![CDATA[.Net]]></category>

		<category><![CDATA[Datenbanken]]></category>

		<category><![CDATA[Know-How]]></category>

		<guid isPermaLink="false">http://blog.skytecag.com/index.php/2008/01/24/sql-server-2005-ein-anderer-port-und-das-management-studio-express/</guid>
		<description><![CDATA[Wenn man einen SQL-Server hat, auf dem mehrere Instanzen laufen, kriegt jede Instanz einen eigenen Port. Wenn man nun mit dem Management Studio Express auf eine der Instanzen will, muss der SQL Browser auf dem Server laufen, damit die Kisten untereinander den Zielport auskaspern können. Blöde, dass sogar MS selbst diesen SQL Browser als Sicherheitslücke [...]]]></description>
			<content:encoded><![CDATA[<p>Wenn man einen SQL-Server hat, auf dem mehrere Instanzen laufen, kriegt jede Instanz einen eigenen Port. Wenn man nun mit dem Management Studio Express auf eine der Instanzen will, muss der SQL Browser auf dem Server laufen, damit die Kisten untereinander den Zielport auskaspern können. Blöde, dass sogar MS selbst diesen SQL Browser als Sicherheitslücke bezeichnet - was macht man also?</p>
<p>Ganz einfach, man gibt den Port einfach in der DB-URL an, also typischerweise so:</p>
<blockquote><p>hostname.domain.de:4711\InstanzName</p></blockquote>
<p>Nein, natürlich nicht. Das wäre ja die Standardnotation, und bekanntlich mag Microsoft keine fremden Standards. Den abweichenden Port muss man deshalb mit einem KOMMA trennen, nicht mit einem Doppelpunkt&#8230; Der korrekte Hostname sähe also so aus:</p>
<blockquote><p>hostname.domain.de,4711\InstanzName</p></blockquote>
<p>Ja, leckt mich doch&#8230; Bis ich das raus hatte, hatte ich mal wieder eine ganze Reihe neuer grauer Haare. Die Rechnung für das Haarfärbemittel schicke ich auf jeden Fall an Microsoft, Abteilung &#8220;Anwenderverwirrung&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.skytecag.com/index.php/2008/01/24/sql-server-2005-ein-anderer-port-und-das-management-studio-express/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Wie man eine .Net-Assembly nachträglich signiert</title>
		<link>http://blog.skytecag.com/index.php/2007/12/17/wie-man-eine-net-assembly-nachtraglich-signiert/</link>
		<comments>http://blog.skytecag.com/index.php/2007/12/17/wie-man-eine-net-assembly-nachtraglich-signiert/#comments</comments>
		<pubDate>Mon, 17 Dec 2007 14:28:38 +0000</pubDate>
		<dc:creator>Gregor Ottmann</dc:creator>
		
		<category><![CDATA[.Net]]></category>

		<category><![CDATA[Know-How]]></category>

		<guid isPermaLink="false">http://blog.skytecag.com/index.php/2007/12/17/wie-man-eine-net-assembly-nachtraglich-signiert/</guid>
		<description><![CDATA[Da habe ich doch heute ein brauchbares Datepicker-Control gesucht und, es geschehen noch Zeichen und Flundern, tatsächlich eines gefunden. Das Datepicker-Dings von Graymatter ist nämlich klein, einfach zu nutzen und ziemlich exakt das, was man so braucht. Tofte. Also habe ich es in mein Projekt gedingst und mal eine frische Compilation angestoßen. Wuppwupp.
Nix &#8220;wuppwupp&#8221;. Mein [...]]]></description>
			<content:encoded><![CDATA[<p>Da habe ich doch heute ein brauchbares Datepicker-Control gesucht und, es geschehen noch Zeichen und Flundern, tatsächlich eines gefunden. Das <a href="http://www.graymattersoft.com/NETProducts/GMDatePicker/tabid/68/Default.aspx">Datepicker-Dings von Graymatter</a> ist nämlich klein, einfach zu nutzen und ziemlich exakt das, was man so braucht. Tofte. Also habe ich es in mein Projekt gedingst und mal eine frische Compilation angestoßen. Wuppwupp.</p>
<p>Nix &#8220;wuppwupp&#8221;. Mein Projekt wollte eine signierte Assembly (&#8221;strong-named&#8221;, wie wir Experten das nennen) bauen, aber leider war die DatePicker-Assembly nicht signiert. Arglgnagnabarfzgna. Da stand ich dann also und durfte mich fragen, was und warum und wie und ob ich jemals wieder Java benutzen darf.</p>
<p>Manche Probleme sind zum Glück nicht ganz so gravierend, wie sie zunächst aussehen. Als elitärer Google-Master bin ich nämlich auf <a href="http://www.elucidweb.com/blog/PermaLink,guid,6cd917b9-07ac-417a-8f85-1b2252d3c2ed.aspx">einen Blogpost</a> gestoßen, der eine ganz einfache, wenn auch etwas hackerige Lösung enthielt:</p>
<blockquote><p>ildasm /tokens /out=unsignedAssembly.il unsignedAssembly.dll<br />
ilasm /dll /key=key.snk unsignedAssembly.il /out=signedAssembly.dll</p></blockquote>
<p>Die Assembly zu disassemblieren und dann wieder zusammenzuklatschen ist zwar irgendwie leicht gewagt - aber was kratzt mich das, solange es nur funktioniert? Nicht die Bohne, genau.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.skytecag.com/index.php/2007/12/17/wie-man-eine-net-assembly-nachtraglich-signiert/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Wie man aus einem int wieder ein C#-Enum-Objekt macht</title>
		<link>http://blog.skytecag.com/index.php/2007/12/14/wie-man-aus-einem-int-wieder-ein-c-enum-objekt-macht/</link>
		<comments>http://blog.skytecag.com/index.php/2007/12/14/wie-man-aus-einem-int-wieder-ein-c-enum-objekt-macht/#comments</comments>
		<pubDate>Fri, 14 Dec 2007 08:45:08 +0000</pubDate>
		<dc:creator>Gregor Ottmann</dc:creator>
		
		<category><![CDATA[.Net]]></category>

		<category><![CDATA[Know-How]]></category>

		<guid isPermaLink="false">http://blog.skytecag.com/index.php/2007/12/14/wie-man-aus-einem-int-wieder-ein-c-enum-objekt-macht/</guid>
		<description><![CDATA[Dieses schon mal vorweg: ASP.Net hinterlässt bei längerer Benutzung schwere Gehirnschäden, folglich muss bei mir mit dem Schlimmsten gerechnet werden. Falls ich demnächst nur mit einer über den Kopf gezogenen Damenunterhose bekleidet und laut &#8220;Microsoft! Microsoft!&#8221; brüllend durch die heiligen Hallen der SKYTEC AG hüpfen sollte, weiß man also, woran das liegen könnte. Soviel zur [...]]]></description>
			<content:encoded><![CDATA[<p>Dieses schon mal vorweg: ASP.Net hinterlässt bei längerer Benutzung schwere Gehirnschäden, folglich muss bei mir mit dem Schlimmsten gerechnet werden. Falls ich demnächst nur mit einer über den Kopf gezogenen Damenunterhose bekleidet und laut &#8220;Microsoft! Microsoft!&#8221; brüllend durch die heiligen Hallen der SKYTEC AG hüpfen sollte, weiß man also, woran das liegen könnte. Soviel zur Einleitung, kommen wir zum Thema:</p>
<p>Ich brauchte für eine Dropdown-Liste die Werte eines enum-Typen, was ziemlich Easy ist: Man kann jedes enum-Dings einfach nach int casten, schon hat man was, was man in ein Dropdown frickeln kann. Das sieht etwa so aus:</p>
<p style="margin-left: 40px">myListBoxDings.Items.Add(FrickelEnum.Burfz.toString(),  ((int)FrickelEnum.Burfz).toString());</p>
<p>Yep, ganz easy. Blöderweise musste ich jetzt aber den Wert aus der Liste in eine andere Methode stopfen, und die erwartet als Parameter keinen string, kein int, nein - einen enum-Wert. Gnarfzgagagagaga. Damenunterhose. &#8220;Microsoft! Microsoft!&#8221;</p>
<p>Was für versierte .Net-Profis (erkennbar an der Damenunterbekleidung) kein Problem ist, hat mich erstmal ziemlich genervt, bis eine kleine Google-Recherche gezeigt hat, dass das alles kein Problem ist, solange man nur weiß, wie es geht:</p>
<p style="margin-left: 40px">FrickelEnum brunf = (FrickelEnum)Enum.ToObject(typeof(FrickelEnum),  Int16.Parse(myListBoxDings.SelectedValue))</p>
<p>Ha! Geht doch! Damit kann ich mich jetzt der eigentlichen Logik widmen und schon mal über den nächsten Artikel nachdenken, der den Titel &#8220;WCF ist Microsofts Version von WTF?!?&#8221; tragen wird. Ob dieser jemals geschrieben wird, hängt allerdings wohl davon ab, wie meine Chefs zur Frage des Beschäftigungsverhältnisses für nackte Entwickler mit Tangas auf dem Kopf stehen. Microsoft! Microsoft!</p>
<p>(Falls es jemand wissen will: Das Ergebnis der besagten Google-Recherche war <a href="http://www.cambiaresearch.com/c4/52a7e5fe-c7fc-49ab-b21d-37e6194687f3/Convert-Integer-To-Enum-Instance-in-csharp.aspx">dieser hilfreiche Artikel hier</a>.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.skytecag.com/index.php/2007/12/14/wie-man-aus-einem-int-wieder-ein-c-enum-objekt-macht/feed/</wfw:commentRss>
		</item>
		<item>
		<title>ASP.Net, ein Custom Control, eine DataTable und ein GridView - Sortieren für Masochisten</title>
		<link>http://blog.skytecag.com/index.php/2007/11/23/aspnet-ein-custom-control-eine-datatable-und-ein-gridview-sortieren-fur-masochisten/</link>
		<comments>http://blog.skytecag.com/index.php/2007/11/23/aspnet-ein-custom-control-eine-datatable-und-ein-gridview-sortieren-fur-masochisten/#comments</comments>
		<pubDate>Fri, 23 Nov 2007 12:38:54 +0000</pubDate>
		<dc:creator>Gregor Ottmann</dc:creator>
		
		<category><![CDATA[.Net]]></category>

		<category><![CDATA[ASP.NET]]></category>

		<category><![CDATA[Know-How]]></category>

		<guid isPermaLink="false">http://blog.skytecag.com/index.php/2007/11/23/aspnet-ein-custom-control-eine-datatable-und-ein-gridview-sortieren-fur-masochisten/</guid>
		<description><![CDATA[Der Tag hatte so schön angefangen: Es war mir gelungen, ein paar Web Parts zu stricken, die im Zusammenspiel ein originelles Anmeldeschema, das vom Kunden vorgegeben wurde, korrekt umsetzten. Ich hatte einen WCF-Webservice korrekt angebunden und rausgefunden, wie man alle Ausgaben elegant lokalisiert. Die sprichwörtliche Sonne war damit beschäftigt, mir aus dem ebenso sprichwörtlichen wie [...]]]></description>
			<content:encoded><![CDATA[<p>Der Tag hatte so schön angefangen: Es war mir gelungen, ein paar Web Parts zu stricken, die im Zusammenspiel ein originelles Anmeldeschema, das vom Kunden vorgegeben wurde, korrekt umsetzten. Ich hatte einen WCF-Webservice korrekt angebunden und rausgefunden, wie man alle Ausgaben elegant lokalisiert. Die sprichwörtliche Sonne war damit beschäftigt, mir aus dem ebenso sprichwörtlichen wie dicken Arsch zu scheinen.</p>
<p>Der Moment, an dem es mit diesem schönen Freitag massiv bergab ging war der, in dem ich ein Custom Control bauen wollte, welches in einem Web Part eingebunden werden sollte und in dem eine Tabelle mit Werten angezeigt werden sollte - ein GridView, wie wir Möchtergern-Experten es gerne nennen. Weil die Applikation ja sauber aufgebaut ist, konnte das seine Daten nicht direkt aus einer SQLDataSource holen sondern aus einer selbstgebauten DataTable. Das ging sogar, doch beim Klick auf einen der Sortierlinks in der Titelzeile flog alles auseinander. Zwei Stunden später wusste ich immer noch nicht, wieso der Kram nicht sortieren wollte und der Tag war dort, wo vorher die immer noch ziemlich sprichwörtliche Sonne herauszuscheinen beliebte.</p>
<p>Weitere zwei Stunden später ging die Sonne wieder auf, denn ich hatte <a href="http://forums.asp.net/t/956540.aspx">ein sehr hilfreiches Forenposting über GridView, DataTable und die verdammte Sortierfunktion</a> gefunden.  Ein wenig kopierter Code, und schon konnte ich sortieren. Aufsteigend. Andersrum nicht, wieso auch immer.</p>
<p>Also tat ich, was ich gleich hätte tun sollen, und las besagtes Posting etwas weiter, nämlich bis zu dem Punkt, wo andere mein Problem hatten und der ursprüngliche Auto sich erbarmte, nochmal nachzuarbeiten - das Ergebnis dieser Nacharbeit findet man <a href="http://community.strongcoders.com/content/CSGridViewSortingPaging.aspx">auf dieser Seite hier</a>, allerdings rafft man es nicht, ohne das Posting gelesen zu haben. Macht nix, zur Not reicht kopieren ohne Peilung auch aus - solange das GridView nur sortiert.</p>
<p><strong>Fazit 1</strong>: Du sollst das Control nicht vor dem GridView loben.</p>
<p><strong>Fazit 2</strong>: DataTables lassen sich nicht ohne fremde Hilfe sortieren.</p>
<p><strong>Fazit 3</strong>: Ich gehe jetzt heim, bevor ich noch auf die Idee komme, meinen Fileupload zu testen&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.skytecag.com/index.php/2007/11/23/aspnet-ein-custom-control-eine-datatable-und-ein-gridview-sortieren-fur-masochisten/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mittlerweile quartzt auch .Net</title>
		<link>http://blog.skytecag.com/index.php/2007/10/12/mittlerweile-quartzt-auch-net/</link>
		<comments>http://blog.skytecag.com/index.php/2007/10/12/mittlerweile-quartzt-auch-net/#comments</comments>
		<pubDate>Fri, 12 Oct 2007 11:20:38 +0000</pubDate>
		<dc:creator>Gregor Ottmann</dc:creator>
		
		<category><![CDATA[.Net]]></category>

		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://blog.skytecag.com/index.php/2007/10/12/mittlerweile-quartzt-auch-net/</guid>
		<description><![CDATA[Irgendwie habe ich derzeit das Gefühl, dass so ziemlich alles, was an Java gut und erstrebenswert ist, auf .Net portiert wird. Beispielsweise war &#8220;Quartz&#8221; für mich immer schon so ein &#8220;no brainer&#8221;, wenn ich in Java irgendwelche Dinge zeitabhängig ausführen musste - und heute habe ich zufällig gesehen, dass es mittlerweile auch eine .Net-Version dieses [...]]]></description>
			<content:encoded><![CDATA[<p>Irgendwie habe ich derzeit das Gefühl, dass so ziemlich alles, was an Java gut und erstrebenswert ist, auf .Net portiert wird. Beispielsweise war &#8220;<a href="http://www.opensymphony.com/quartz/">Quartz</a>&#8221; für mich immer schon so ein &#8220;no brainer&#8221;, wenn ich in Java irgendwelche Dinge zeitabhängig ausführen musste - und heute habe ich zufällig gesehen, dass es mittlerweile auch <a href="http://quartznet.sourceforge.net">eine .Net-Version dieses Scheduler-Tools</a> gibt.</p>
<p>Gut, mit der microsoften Version des Minerals ist man scheinbar noch nicht ganz so weit, wie es in der Java-Welt der Fall ist, und auch eine passende Integration in Spring.net scheint es noch nicht zu geben, aber so weit ich es aus dem Tutorial erkennen kann, ist die Entwicklung auf jeden Fall weit genug, um einen Test zu rechtfertigen. Falls man mal unter .Net schedulieren muss natürlich, ansonsten kann man seine Zeit sicher mit angenehmeren Beschäftigungen totschlagen.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.skytecag.com/index.php/2007/10/12/mittlerweile-quartzt-auch-net/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ein Tag aus dem Leben einer ASP-Seite</title>
		<link>http://blog.skytecag.com/index.php/2007/09/27/ein-tag-aus-dem-leben-einer-asp-seite/</link>
		<comments>http://blog.skytecag.com/index.php/2007/09/27/ein-tag-aus-dem-leben-einer-asp-seite/#comments</comments>
		<pubDate>Thu, 27 Sep 2007 09:52:30 +0000</pubDate>
		<dc:creator>Gregor Ottmann</dc:creator>
		
		<category><![CDATA[.Net]]></category>

		<category><![CDATA[ASP.NET]]></category>

		<category><![CDATA[Know-How]]></category>

		<guid isPermaLink="false">http://blog.skytecag.com/index.php/2007/09/27/ein-tag-aus-dem-leben-einer-asp-seite/</guid>
		<description><![CDATA[Mensch, da habe ich es so lange geschafft, mich vor Microsofts Webtechnologien zu drücken, und was passiert mir in diesen Tagen und Wochen? Alle Kunden verlangen auf einmal nach Sharepoint, ich darf mich in den ganzen Kram einarbeiten und stelle plötzlich entsetzt fest, dass ich das Zeug teilweise gar nicht so uncool finde. Ich gebe [...]]]></description>
			<content:encoded><![CDATA[<p>Mensch, da habe ich es so lange geschafft, mich vor Microsofts Webtechnologien zu drücken, und was passiert mir in diesen Tagen und Wochen? Alle Kunden verlangen auf einmal nach Sharepoint, ich darf mich in den ganzen Kram einarbeiten und stelle plötzlich entsetzt fest, dass ich das Zeug teilweise gar nicht so uncool finde. Ich gebe zu, mich irgendwie schmutzig zu fühlen - aber auf eine Art, die durchaus Sex-Appeal hat. Ich spare mir im Sinne der USK-Einstufung für diese Website detaillierte Vergleiche, die genauer beschreiben würde, wie ich das meine.</p>
<p>Gerade als Umsteiger aus der Java-Welt habe ich allerdings ein paar Stolpersteine gefunden, die nicht ganz ohne sind. Der grundlegendste dieser Steine war wohl die Sache mit dem Lifecycle der ASP-Seiten - ich dachte ganz arrogant, dass ich das als erfahrener J2EE-Anwender schon intutiv raffen würde, und das war ein Irrtum. Irgendwie wurde aber schnell alles klarer, als ich <a href="http://www.15seconds.com/issue/020102.htm">die kurze Einführung in den Lebenszyklus einer ASP-Seite</a> durchgelesen habe, die mir MHenze freundlicherweise empfohlen hat. Wer hätte gedacht, dass in so wenig Text so viel Lebensrettungspotenzial stecken könnte?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.skytecag.com/index.php/2007/09/27/ein-tag-aus-dem-leben-einer-asp-seite/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
