.
Anmeldung | Registrieren | Hilfe

.NET-Blogs Archiv August 2007

Sprechende Figuren auf der Web-Seite

31.08.2007 06:37:12 | Thomas Schissler

Bin da gerade auf ein nettes Angebot gestoßen. SitePal bietet animierte Figuren, die man sich selber konfigurieren kann. Diese Figuren können dann Texte, die man vorgibt, sprechen, entweder aufgezeichnete Audio-Files oder auch über Texteingabe. Diese Figuren lassen sich dann in eine Web-Seite integrieren.

image

Ist sicher interessant, wenn man ein entsprechendes Projekt hat. Mal sehen, vielleicht kann ich das zukünftig mal nutzen. 

SitePal Homepage

Deflowered twice on one day at nrw07

30.08.2007 14:28:00 | Thomas Freudenberg

nrw07 speaker Last Friday the nrw07 took place in Wuppertal, the biggest community conference in North Rhine-Westphalia. About 100 attendees including the 22 speakers! The Diebels brewery contributes a couple of beer crates, and Subway served lots of sandwiches for lunch.

And I was deflowered twice on that day.

me speakingFirst, it was my very first talk! I gave a Community Server presentation a couple of month ago at our local .NET UserGroup, and the other guys suggested that I should repeat that at the nrw07. Unfortunately, I didn´t object enough.

When I sat in the hotel lobby with some other speakers the night before nrw07, I started getting nervous, but they managed to calm me down (or was it the beers we had?). The next day was fine, my talk was one of the first. It ran pretty well (as far as I am concerned). Of course we experienced the usual technical difficulties such as a projector, whose picture was twice as large as the screen and not resizable. Although I got the second largest room in the facility, there were only 7 attendees. Seems to me as Community Server is not of interest for everyone. The good thing about that is that those folks already knew CS, so I didn´t have to start at square one, but instead dive right into the technical stuff. The time flew, I ran over about 10 minutes and had still enough material for another hour. Nevertheless my talk can not have been that bad because the audience asked the right questions afterwards. I hopethink that´s a good sign.

all speakersMy second premiere happened later that night, when Craig Murphy interviewed me for a podcast (not aired yet). At that point in time I already had a couple of beers, so it went quite smooth. It´s self-evident that we talked much about Community Server. Because I mentioned Twitter in my talk, Craig took me up on that, and somehow we drifted into social networking, a topic I´m quite interested in. Even when the podcast was over, we continued the discussion.

To sum it up, it was a great event, where I met many smart people. Many thanks to the orga team, Stephan Oetzel and Daniel Fisher!

And now that I lost my virginity, I´m looking forward to give a talk again next year (assumed they let me on stage ever again)

Here are some other speakers and attendees blogging about nrw07:

I met some more nice guys, who didn´t blog about this event. Nevertheless I´d like to send them my regards because we had such a good time and talks: Andreas Hoffmann, Christian Schütz, Mischa Hüschen, Pascal Kremmers, Constantin Klein, Marcel Gnoth, and Marcel Franke. Sorry if I forgot one, there were so many faces new to me. When you see me next time, just stop by and treat me to a beer...

LiveID jetzt mit CardSpace Unterstützung!

25.08.2007 09:19:40 | Mathias Raacke

Windows LiveID unterstützt jetzt auch Windows CardSpace. Statt mit einem Passwort ist es nun möglich, eine CardSpace InfoCard für die Anmeldung bei Windows LiveID zu verwenden. Endlich!

Wie das genau funktioniert beschreibt Angus Logan in seinem Blog. Außerdem gibt es dazu einen Screencast auf Visitmix. Im LiveID Blog steht zwar noch nichts, aber auch dort sollte es bald weitere Informationen zu LiveID und CardSpace geben.

LiveID selbst wird im Moment für fast 1 Milliarde(!) Anmeldungen pro Tag verwendet, außerdem ist es möglich, LiveID auch in eigenen Web Seiten zu verwenden. Es gibt dazu auch Beispiele für PHP, Java und andere Sprachen.

Rechnerkonfiguration

21.08.2007 10:30:22 | Thomas Schissler

Bei der Neuinstallation eines Entwicklungsrechners dauert es immer ewig, bis man sich die ganzen nützlichen Helferlein zusammengesucht hat, die man im Laufe der Zeit zu schätzen gelernt hat. Deshalb habe ich mir gedacht, ich schreibe mir mal eine Liste, die ich dann immer wieder ergänzen kann. Und vielleicht ist für den einen oder anderen da auch noch was interessantes dabei. Also so könnte ein Entwicklungsrechner aussehen:

Betriebsystem / Standardanwendungen:

  • Windows Vista Ultimate
  • Office 2007
  • SQL-Server 2005 Express
  • SQL-Server 2005 Management Studio

Entwicklungsumgebung:

Tools

Stand 05.10.2007
To be continued...

Stylesheets in ASP.Net UserControls in VS 2008

20.08.2007 16:45:30 | Thomas Schissler

 Will man mit Visual Studio 2008 einem UserControl ein StyleSheet zuordnen, sieht das normalerweise so aus:

<%@
Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs"
Inherits="Controls.WebUserControl1" %> <head> <link href="../App_Themes/style.css" rel="stylesheet" type="text/css" /> </head> <asp:Button ID="Button1" runat="server" Text="Button" /><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>


Damit scheint aber der Designer von Visual Studio 2008 Beta 2 Probleme zu haben. Sowohl im Split-View als auch im Design-View wird nach einem Refresh nichts mehr angezeigt.

image

Bei mir hat hier ein kleiner Trick geholfen. Man verschiebt einfach das Link-Tag mit dem Stylesheet ganz an's Ende des Codes. Dann kann man mit Hilfe der Refresh-Funktion aus dem Kontext-Menü des Design-Panes die Anzeige aktualisieren und siehe da, Button und Textbox werden wieder angezeigt.

image

Scroll-Position nach PostBack beibehalten

20.08.2007 11:58:20 | Thomas Schissler

Ist eine ASP.Net Seite scrollbar, gibt es den unschönen Effekt, dass die Seite nach dem Postback wieder ganz oben steht. Ich habe mal eine kleine Beispiel-Seite, die diesen Effekt demonstriert:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="ValuePlanner_2008.Web.INN_ProjectArea.WebForm2" %>
<%@ Register Assembly="cTextBox" Namespace="artiso_lib.UserControls" TagPrefix="cc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
 <head runat="server">
 
 <title>Untitled Page</title>
 </head>
 <body>
 
<form id="form1" runat="server">
 
 <div> 
    <%>

 1: for (int i
= 0; i < 50; i++)
 2: {
 3: Response.Write(i
+ "<br>");
 4: } 
 5: 
    %> 
   </div>
  </form>
 </body>
</html>


Dieses Problem kann man ganz einfach umgehen, indem man in der Page-Direktive das Attribut MaintainScrollPositionOnPostback="true" einfügt, also:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="ValuePlanner_2008.Web.INN_ProjectArea.WebForm2" MaintainScrollPositionOnPostback="true"  %>

>

AJAX Toolkit ModalPopup per Javascript aufrufen

18.08.2007 13:57:57 | Thomas Schissler

Im ASP.Net AJAX Toolkit findet man ein ModalPopup, das sehr gute Dienste leistet, will man Meldungen etwas eleganter ausgeben als mit einem schlichten alert(). Die Handhabung ist relativ einfach. Man nehme ein beliebiges Serverseitiges Control und weise diesem den ModalPopupExtender zu. Dann gibt man noch mindestens die ID des Controls an, das den Inhalt des Popups repräsentieren soll und fertig. Will man das Popup allerdings client-seitig per Java-Script aufrufen, muss man ein wenig in die Trickkiste greifen. Das Problem dabei ist, dass der ModalPopupExtender immer ein TargetControl braucht. Ich habe dafür einfach ein unsichtbares DIV erzeugt, das mit runat="server" auch auf dem Server sichtbar gemacht wurde. Dann kann man mit $Find('<ID des ModalPopupExtenders>').show() das Popup aufrufen.

Neu war an diesem Beispiel für mich auch der Style filter: alpha(opacity = 70) mit dem man eine Transparenz erzeugen kann.

<%@
Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="ValuePlanner_2008.Web.INN_ProjectArea.WebForm1"
%> <%@ Register Assembly="AjaxControlToolkit"
Namespace="AjaxControlToolkit" TagPrefix="cc1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD
XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Untitled
Page</title> <style type="text/css"> .modalBackground
{ filter: alpha(opacity = 70); background-color: #CCCCCC; } .ErrorMessage { background-color:
#800000; color: #FFFFFF; } </style> </head> <script language="javascript" type="text/javascript">
 1:  
 2: function okScript()
 3: {
 4: alert
("OK-Button wurde gedrückt");
 5: }
</script> <body> <form id="form1" runat="server"> <div id="PopupPseudoPanel" style="display: none" runat="server"> </div> <cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"> </cc1:ToolkitScriptManager> <cc1:ModalPopupExtender ID="ModalPopupExtender" runat="server" PopupControlID="Panel1" DynamicServicePath="" Enabled="True" TargetControlID="PopupPseudoPanel" BackgroundCssClass="modalBackground" OkControlID="OkButton" CancelControlID="CancelButton" OnOkScript="okScript();"> </cc1:ModalPopupExtender> <br /> <br /> <input id="Button2" type="button" value="button" onclick="$find('ModalPopupExtender').show();" /> <asp:Panel ID="Panel1" runat="server" CssClass="ErrorMessage" style="display:none"> <h1> Popup</h1> <p> Das ist ein Popup!</p> <center> <asp:Button ID="OkButton" runat="server" Text="OK"></asp:Button> <asp:Button ID="CancelButton" runat="server" Text="Cancel"></asp:Button> </center> </asp:Panel> </form> </body> </html>

 

LINQ to SQL in ASP.Net Anwendungen

17.08.2007 08:53:05 | Thomas Schissler

Wie man an meinen letzten Posts sieht, beschäftige ich mich momentan sehr intensiv mit LINQ to SQL. Eine wichtige Lektion habe ich gerade eben gelernt. Folgende Ausgangssituation:

Ich habe eine ASP.Net Anwendung. In einem DAL lese ich per LINQ ein Objekt aus der Datenbank und schreibe das dann in eine Session-Variable. Der Anwender bekommt das Objekt an der Oberfläche angezeigt und kann es verändern. Nun möchte ich das Objekt wieder in die Datenbank zurückschreiben. Fast alle Tutorials zu LINQ beschreiben, wie einfach es ist, Daten via LINQ zu schreiben. Aber dort wird in einer einzigen Funktion erst gelesen, dann werden die Daten verändert und dann wieder zurückgeschrieben. Das tritt ja aber in der Praxis eher selten auf.

Also habe ich mich gefragt, was LINQ tut, wenn ich den DataContext einfach neu instanziere und dann einfach mein Objekt per Add an die Tabelle hinzufüge. Na ja,wie zu erwarten, hat LINQ gemeldet, dass der entsprechende Primary Key bereits existiert. Also was tun? Den gesamten DataContext in die Session legen? Dass das keine gute Idee ist, habe ich ziemlich schnell rausgefunden. Der DataContext skaliert sehr schlecht, da er ein eingebautes Change-Tracking, Identity Tracking und sonst noch ein paar Nettigkeiten hat, die sich aber in einer Web_Anwendung recht eklig verhalten können.

Nach einigem Suchen bin ich dann drauf gekommen, dass es auch noch eine Attach-Methode gibt. Damit konnte ich mein Problem schön lösen. Das Ergebnis für das Schreiben sieht nun so aus:

public void SaveProductVersion(cProductVersion
_ProductVersion) { DataContext dataContextProducts = new DataContext("Data
Source=NOTEBOOK_VISTA;Initial Catalog=ValuePlanner_2008;Integrated Security=True"); if (_ProductVersion.ID
== 0) { dataContextProducts.GetTable<cProductVersion>().Add(_ProductVersion);
} else { dataContextProducts.GetTable<cProductVersion>().Attach(_ProductVersion,
true); } dataContextProducts.SubmitChanges(); }

 

Hier wird abgefragt, ob es eine neue Produktversion ist (ID == 0). Wenn ja, dann füge ich die per Add hinzu (die ID wird von LINQ automatisch vergeben). Bei einem bestehenden Projekt verwende ich die Attach-Methode. Ganz einfach, wenn mans weiss. Wichtig ist noch, dass alle Properties des Objektes das Attribut UpdateCheck=none benötigen.

ASP.Net 2.0 Data Access Tutorials

16.08.2007 11:06:18 | Thomas Schissler

Scott Mitchell hat 75 Tutorials zum Thema Data Access mit ASP.Net 2.0 geschrieben. Hier ist praktisch alles an Technologie beschrieben, was für die Programmierung von datenbankbasierten Webanwendungen mit ASP.Net 2.0 notwendig ist. Einzig LINQ wird momentan noch ausgespart. Eine wirklich tolle Sammlung an guten Informationen.

image

Data Access Tutorials : The Official Microsoft ASP.NET 2.0 Site

LINQ to SQL Debug Visualizer - ScottGu's Blog

16.08.2007 10:53:05 | Thomas Schissler

Wenn man mit LINQ to SQL arbeitet, dann steht man sehr schnell vor dem Problem, dass man sehen möchte, wass denn LINQ mit der Datenbank so treibt. Der SQL Profiler kann zwar die abgesetzten SQL-Statements anzeigen, die zurückgegebenen Ergebnisse muss mann dann aber von Hand abfragen. Viel eleganter geht es mit dem LINQ to SQL Debug Visualizer von Scott Guthrie. Damit kann man die Abfrage im Debug-Modus von Visual Studio 2008 einfach anzeigen lassen:

Mit dem Execute-Button kann man die Abfrage einfach ausführen und das Ergebnis anzeigen lassen.

Ein echt cooles Tool. Download und eine Installationsanleitung gibt es hier.

LINQ to SQL Debug Visualizer - ScottGu's Blog

Mit LINQ verknüpfte Tabellen in einem SELECT-Statement laden

15.08.2007 19:17:42 | Thomas Schissler

Ich habe folgendes Datenmodell mit dem LINQ To SQL Designer aufgebaut:

image

So, eigentlich ganz einfach. Mit folgendem Code kann ich die Daten einlesen:

 var formList
= from f in listDataContext.cFormListItems orderby f.FormShort select f;
 var countryList
= from c in listDataContext.cCountryListItems orderby c.CountryName select c;

Damit liest LINQ die Daten für die Forms bzw. die Countries ein, die zugeordneten Tabellen bleiben leer, bis man auf das entsprechende Element zugreift, dann wird das nachgeladen (lazy loading). Dieser Effekt ist super, wenn ich z.B. eine Liste der Kunden habe und den Kunden Bestellungen zugeordnet sind und ich teilweise Kunden mit mehreren tausend Bestellungen habe. Dann will ich die Bestellungen nicht gleich alle mitladen. Aber in meinem Fall war es so, dass in den verknüpften Tabellen nur wenige Datensätze stehen und ich deshalb lieber alles auf einen Rutsch laden wollte. Das geht dann so:

 listDataContext = new cListDataContext("Data
Source=NOTEBOOK_VISTA;Initial Catalog=ValuePlanner_2008;Integrated Security=True"); //
Define LoadOptions to load some related tables with their parent tables in one select
statement  DataLoadOptions loadOptions
= new DataLoadOptions();
loadOptions.LoadWith<cFormListItem>(f
=> f.FormType); loadOptions.LoadWith<cCountryListItem>(c
=> c.Market); listDataContext.LoadOptions = loadOptions;

Diesen Code muss man vor der ersten Abfrage ausführen. Hier werden zwei LoadWith (jeweils für eine untergeordnete Tabelle) mit angegeben. Dies bewirkt, dass die untergeordneten Tabellen mit der jeweiligen Haupttabelle in einem einzigen SELECT Statement aus der Datenbank geladen werden! Ein paar Sachen muss man allerdings beachten:

  • Die LoadOptions können nur vor der ersten Abfrage auf dem DataContext zugewiesen werden.
  • Die Loadoptions können nicht mehr verändert werden, wenn sie einmal einem DataContext zugewiesen wurden.
  • Für mehrere Tabellen ruft man das LoadWith einfach mehrfach auf.

Ich hätte das zwar schöner gefunden, wenn man das auch mit im Designer einstellen könnte, aber es funktioniert einwandfrei.

Hier noch als Beweis das SQL-Statement, das dann tatsächlich auf der Datenbank ausgeführt wird:

SELECT [t0].[ID],
[t0].[FormLong], [t0].[FormShort], [t0].[FormTypeID], [t1].[ID] AS [ID2],
[t1].[FormTypeLong], [t1].[FormTypeShort] FROM [values_Forms] AS [t0] INNER JOIN [values_FormTypes] AS [t1] ON [t1].[ID]
= [t0].[FormTypeID] ORDER BY [t0].[FormShort]

BE Gantt Update

13.08.2007 18:36:02 | Boas Enkler

Soeben habe ich die nächste Version des BE Gantts fertigstellen können
hier eine kurze Übersicht der wichtigsten Änderungen


Neu:
Events
- BarRightClick Event
- BarMoved Event
- BarSized Event
- BarAdded Event

- Methoden & Properties
- BETimeBarInfo.FixedType Gibt an wie eine bar gesperrt wird falls Bar.IsBarFixed = true. So kann z.bsp. nur der Linke oder rechte rand einer bar gesperrt werden
- RemoveSingleBar - Methode zum entfernen einer TimeBar
- ClearBarsFromItem - Methode zum entfernen aller TimeBars eines Items
- bool InnerGantt.AllowBarDrag - Gibt an ob Bars via Drag & Drop Operationen verändert werden dürfen
- bool LeftColumnVisible - Gibt an ob die linke Seite des Gantt Controls (Liste) sichtbar ist
- NewDefaultTimeBar & CreateDefaultTimeBar zum erzeugen von BArs mti den Einstellungen des Properties DefaulTimeBarVisuals
Allgemein
- ScaleDisplayTimeOnFarestBar - Methdode wenn ausgeführt passt das GanttChar seinen Anzeigebreich soweit an, dass mindestens das späteste Ender einer Timbar noch im sichtbaren beriech liegt
- ScrollToDateTime Methode, scrollt im Gantt Control zueinem im Anzeige Zeitraum vorhandenen DateTime
- Bitmap Cache für Seperators
- Items sind über einen Click auf dem linken Header Control sortierbar
- BETimeBarInfo hat nun ein ContextMenu Property, dieses ContextMenu wird bei einem RightClick nach dem BarRightclick Event angezeigt
- BugFix beim vertikalen scrollen wurden Rows nicht komplett dargestellt
- Optimierungen im aufbau der Anzeige
- Headeranzeige optimiert


Am linken Rad habe ich mal ein Diagram der Properties einer TimeBar eingefügt. Dies sind alle für die TimeBars dynamisch definierbar.

Ich plane in der nächsten Version die Dokumentation der Bars für Intellisense einzubauen und vielleciuht auch eine kleine vorabhilfe mit Samples zu generieren

TFS-Arbeitsbereiche auf dem Server löschen

10.08.2007 08:16:46 | Thomas Schissler

Die Arbeitsbereiche des Team Foundation Server stellen eine Verknüpfung eines lokalen Verzeichnisses mit einem Pfad in der Quellcode-Verwaltung her. Aus verständlichen Gründen kann ein und das selbe Verzeichnis nicht mehrfach zugeordnet werden. Dies gilt insbesondere für den Fall, dass zwei verschiedene Benutzer auf dem gleichen Rechner das selbe Verzeichnis zuordnen wollen, auch wenn es sich auf den gleichen Pfad in der Quellcode-Verwaltung bezieht. Das ganze macht Sinn. Aber was tun, wenn z.B. der Benutzer A nicht mehr existiert und nun Benutzer B seine Projekte übernehmen soll? Der Rat lautet hier, von Benutzer A alle Arbeitsbereiche löschen, bevor der Benutzer gelöscht wird. Der Rat hilft aber wenig, wenn der Benutzer bereits gelöscht wurde und man dann erst die Probleme feststellt. Oder wenn, wie in meinem Fall, durch einen Umzug auf einen anderen Server der Benutzer neu angelegt wurde und zwar den gleichen Namen hat, aber eine andere SID. Die Anpassung der SIDs in der TFS-Datenbank scheint hier nicht richtig funktioniert zu haben.

Den lokalen Workspace zu löschen ist kein Problem, aber das hilft leider in diesem Fall nicht. Die Arbeitsbereiche sind auch zusätzlich noch auf dem Server gespeichert und dort muss man diesen nun löschen, damit man den mit dem neuen Benutzer neu einrichten kann.

Zunächst der Befehl, mit dem man die Workspaces vom Server anzeigen kann:

tf workspaces /owner:* /server:<TFS-Servername> /format:detailed

Um einen Workspace zu löschen kann nun folgender Befehl verwendet werden:

tf workspace /delete <Workspace-Name>;<Benutzername>  /server:<TFS-Servername>

Es gibt auch noch den Befehl /updateUserName, der hat in meinem Fall aber leider nicht funktioniert.

Gantt PreBeta

09.08.2007 11:26:25 | Boas Enkler













So nun ist es bald soweit, die erste PreBeta Version steht bald zur Verfügung und dann darf bei den Betatesten fleißig getestet werden.

Inzwischen kann man nun auch den Headerbereich farblich beeinflussen und auch für die einzelnen Elemente Schriftarten wählen. Wochenenden kann man nun auch eine eigene Farbe geben. In einem der nächsten Schritte soll es auch möglcih sein Freidefinierbare bereiche des Controls ( also DateTime grenzen) beliebig einzufärben um so z.Bsp. bestimmte phasen eines Zeitraums abbilden zu können

Datumswerte werden per standard passend zur aktuellen CultureGeneriert können aber auch abweichend definiert werden
Alle Properties habe ich unter der Kategorie "Gantt Settings" zusammen gefasst. s. Screenshot links.

Jeder Elementtype (Item, Header,...) hat einen eigenen Visuals knoten an dem man Dinge wie Backcolor, Font, Datumsformat abweichend vom Standard einstellen kann.

Denke so hat man die größe Flexibilität das control seinen Bedürfnissen anpassen zu können.

So wie es aussieht geht heute abend oder morgen früh die Beta an die Tester raus.

in dem Sinn : Schonmal viel Spaß beim Testen !


Infragistics WebGrid Control in einer Zelle ansprechen

08.08.2007 11:05:43 | Thomas Schissler

Will man in einem Infragistics WebGrid ein Control in einer Zelle einer TemplatedColumn ansprechen, dann ist das gar nicht so einfach wie zunächst vermutet. Man muss ein paar Umwege einlegen. So funktionierts aber dann:

protected void UltraWebGrid1_InitializeRow(object sender, Infragistics.WebUI.UltraWebGrid.RowEventArgs e)
{
   
DropDownList ddlUnit = ((DropDownList)((CellItem)((TemplatedColumn)e.Row.Cells.FromKey("Unit").Column).CellItems[e.Row.Index]).Controls[1]);
    ....
}>

Statt dem Controls[1] könnte man auch noch ein FindControl() nutzen, das wäre noch etwas eleganter.

Einstiegstitel

07.08.2007 10:11:23 | Boas Enkler

Da ich immer wieder nach Buchtitel gefragt werden habe ich hier ein paar der Bücher zusammengefasst, die mir Persönglich am meisten gebracht haben. Bei Bestellungen wärs toll wenn ihr die hier aufgeführten Amazon Partnerlinks verwenden würdet :)

- Visual C# 2005 Schritt für Schritt empfiehlt sich für einen Grundlegenden einstieg in praktich alle wesentlcihen C# Themen
- Das 2. Buch ist eignetlcih ein Prüfungsvorereitungs buch (70-526) aber das Buch geht sehr einfach in einer Tutorial artigen Form über sämtliche Windows Forms Themen und ist somit auch gut für Anfänger geeignet
- Das dritte Buch deckt alle Bereich der Entwicklung von Datenbankanwendungen ab. Es geht dort um XML,MS SQL Server aber auch allgemeine Datenbank ansprachen. Toll ist dass der Autor auch immer wieder vermerkt was MS SQL spezifisch ist und welche funktionen  allgemein gültig sind
- Das vierte Buch "Pro .NET 2.0 Windows Forms..." ist schon ein etwas anspruchsvolleres Bcuh und geht auf die Themen Custom Control Optimizing GUI etc. ein und ist für alle interessant die schon etwas erfahrung haben und eine Ansprechende GUI anbieten möchten.
-Für alle die es sich "trauen" sei das letzte Buch "Microsoft .NET Framework Programmierung in C#" empfohlen. Dieses Buch gibt tiefgehendes Know über die Funktionsweisen des Frameworks an sich. Achtung hier ist Hintergrundwissen Vorraussetzung!

 

BE Gantt Development

06.08.2007 16:55:52 | Boas Enkler

Es hat sich wieder einiges am Gantt Control getan.

Der Schwerpunkt der Entwicklung lag auf dem Zugänglichen machen interner Events. So kann man z.bsp. Eingreifen wenn eine Bar oder ein Item für das Zeichnen vorgeladen werden oder man kann reagieren wenn sich der sichtbare Bereich des Gantts ändert.

 So ist es möglich Daten on Demand nachzuladen.

Der andere Schwerpunkt lag im Verbessern der Useability, so kann man nun auch bei einzelnen Zeilen Hintergrundfarbe etc. bestimmen.

Hier mal ein Screenshot mit Farbigen Hintergrund Zeile



Weitehrin gibt es inzwischen auch definierbare Tooltips je bar.

Ein nettes kleines Feature, dass man im mom leider nicht auf dem Screenshot sieht sind kleine hilfslinien die in der Zeitleiste angezeigt werden sobald man eine Bar via Mouse & Drag verschiebt oder Sized ,so dass man immer sieht wie weit die Bar ausgedeht ist.

Ansonsten habe ich noch 2 Controls in das GanttChart unten reingepackt, die es ermöglcihen auf der Zeitachse zu zoomen. Sprich den Abstand zwischen den Stunden  btw. Tage einzustellen.

In meinem nächsten Posting folgen dann Beispielcodes wie das Gantt Control mit Daten beladen wird.

"Add Service Reference" in Visual Studio 2008 beta 2

01.08.2007 19:02:20 | Mathias Raacke

Gerade habe ich zufällig diesen neuen Button im "Add Service Reference"-Dialog bemerkt:

image

Wenn ich einen "Advanced"-Button sehe den ich noch nicht kenne muss ich da immer einfach drauf klicken :). So sieht das dann aus:

image

Sehr viele neue Optionen direkt aus Visual Studio verfügbar - sehr schön! Vor allem die Option "Reuse types in referenced assemblies" könnte wirklich praktisch sein. Fehlt eigentlich nur noch ein passendes Projekt, damit ich mich mal so richtig in der Praxis mit 3.5 und Visual Studio 2008 beschäftigen kann.

WPF Forum | ASP.NET Forum | ASP.NET MVC Forum | Silverlight Forum | Windows Phone 7 Forum | SharePoint Forum | Dotnet Jobs | Dotnet Termine | Developer Blogs | Dotnet News

Das Team | Regeln | Impressum