Zuerstmal: Willkommen in meinem neuen Blog – werde zu einem späteren Zeitpunkt etwas mehr von mir preisgeben. Herzlichen Dank noch an Chris, der dieses Blog hier bereitstellt!
Zum Thema: Vorgestern ist die March CTP von Atlas erschienen und wieder sind einige Unzulänglichkeiten behoben worden und natürlich auch das eine oder andere Feature dazugekommen – und das schönste: die Doku umfasst endlich etwas mehr als nur super-simple Einstiegs-Skripts.
Da das ganze mit diesem Release nun definitiv den Status “Spielerei” verlassen hat, möchte ich mein Blog mit einer kleinen Serie über Atlas und seine Möglichkeiten eröffnen – und so vielleicht dem ein oder anderen den Einstieg erleichtern.
Let’s get started
Als allererstes muss man sich den Installer für die March-CTP besorgen und das ganze installieren.
Wenn man nun eine neue WebSite erstellen will, erwartet einem auch schon das entsprechende Projekt-Template:

OK und los
AJAX… hört sich aufwändig an
Das schöne an Atlas ist, dass es sich sauber in das Konzept von ASP.NET integriert. Das heisst, man kann auch eine bestehende ASP.NET-Seite (in der Regel) relativ einfach ins Web 2.0 hieven 
Und so soll auch die erste Beispiel-Applikation ein klassisches ASP.NET-Sample sein: ein GridView mit allem drum und dran.
Das sieht dann etwa so aus:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!--DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Atlas-Sample<!--title>
<!--head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="False" DataSourceID="SqlDataSource1" EmptyDataText="There are no data records to display."
PageSize="3">
<Columns>
<asp:BoundField DataField="ProductId" HeaderText="ProductId" ReadOnly="True" SortExpression="ProductId" />
<asp:BoundField DataField="ProductName" HeaderText="ProductName" SortExpression="ProductName" />
<asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" />
<asp:BoundField DataField="Price" HeaderText="Price" SortExpression="Price" />
<!--Columns>
<!--asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DatabaseConnectionString1 %>"
ProviderName="<%$ ConnectionStrings:DatabaseConnectionString1.ProviderName %>"
SelectCommand="SELECT [ProductId], [ProductName], [Description], [Price] FROM [Products]">
<!--asp:SqlDataSource>
<!--div>
<!--form>
<!--body>
<!--html>
Dank ASP.NET ist auch bereits ein simples Paging und eine Sortierfunktion integriert – alles wunderbar, wenn da nur diese Postbacks nicht wären…
Und genau da kommt Atlas ins Spiel:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!--DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Atlas-Sample<!--title>
<!--head>
<body>
<form id="form1" runat="server">
<atlas:ScriptManager ID="scriptMan" runat="server" EnablePartialRendering="true" />
<div>
<atlas:UpdatePanel runat="server" id="updatePanel">
<ContentTemplate>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="False" DataSourceID="SqlDataSource1" EmptyDataText="There are no data records to display."
PageSize="3">
<Columns>
<asp:BoundField DataField="ProductId" HeaderText="ProductId" ReadOnly="True" SortExpression="ProductId" />
<asp:BoundField DataField="ProductName" HeaderText="ProductName" SortExpression="ProductName" />
<asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" />
<asp:BoundField DataField="Price" HeaderText="Price" SortExpression="Price" />
<!--Columns>
<!--asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DatabaseConnectionString1 %>"
ProviderName="<%$ ConnectionStrings:DatabaseConnectionString1.ProviderName %>"
SelectCommand="SELECT [ProductId], [ProductName], [Description], [Price] FROM [Products]">
<!--asp:SqlDataSource>
<!--ContentTemplate>
<!--atlas:UpdatePanel>
<!--div>
<!--form>
<!--body>
<!--html>
Das untere Beispiel unterscheidet sich in genau 3 Zeilen von dem oberen (ja die fett hinterlegten
).
<atlas:ScriptManager ID="scriptMan" runat="server" EnablePartialRendering="true" />Der ScriptManager ist das wohl wichtigste Atlas-Control - ohne ihn geht gar nichts. Das Attribut "EnablePartialRendering"muss auf true gesetzt sein, sobald mit UpdatePanels gearbeitet wird. Es sorgt dafür, dass nur einzelne Bereiche einer Seiteaktualisiert werden können.
<atlas:UpdatePanel runat="server" id="updatePanel">Der UpdatePanel umschliesst einen Teil der Seite, der selektiv aktualisiert werden soll. Das ist alles was für so ein einfaches Beispielgemacht werden muss. Die Postbacks werden "abgefangen" und in AJAX-Commands umgesetzt.Der UpdatePanel kann aber noch viel mehr, so kann er zB. auf bestimmte Ereignisse reagieren (Stichwort: EventTrigger).
In den nächsten Teilen meiner kleinen Atlas-Vorstellrunde, wird dann etwas genauer drauf eingegangen, wass denn da passiertund vorallem wo man da noch selber eingreifen kann.
Download: HelloAtlas.zip (571.17 KB)