Tags: | Posted by AlexanderZeitler on 1/15/2007 12:44 PM | Comments (0)

Chris hat vor ca. 1/2 Jahr quasi "nebenbei" schon mal darauf hingewiesen - da ich jetzt explizit danach gesucht habe, hier nochmal der Hinweis:

Für MSBuild gibt es von Attrice das kostenlose Tool Microsoft Build Sidekick, eine recht komfortable GUI für MSBuild:

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , | Posted by AlexanderZeitler on 1/10/2007 11:00 AM | Comments (0)

Milan Negovan hat einige PDF "cheat sheets" für die client-JavaScript Libraries in ASP.NET AJAX veröffentlicht - sehr praktisch!

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , | Categories: WCF Posted by AlexanderZeitler on 1/10/2007 6:01 AM | Comments (1)

Microsoft hat die  Web Service Software Factory unter dem Namen Web Service Software Factory - December 2006 released. Die Web Service Software Factory enthält Guidance Packages für die Verwendung von ASP.NET Web Service sowie der WCF.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , | Posted by AlexanderZeitler on 1/10/2007 5:52 AM | Comments (0)

Microsoft hat den Release Candidate der Web Client Software Factory bei CodePlex veröffentlicht.

Änderungen:

  • MSI-Installer
  • Erweiterte Dokumentation
  • Erweiterte Guidance Packages
  • Performance-Verbesserungen

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , | Posted by AlexanderZeitler on 1/8/2007 11:28 AM | Comments (0)

Am Freitag den 2. Februar veranstaltet die Glengamoi Community ein kostenloses eintägiges Training zu ASP.NET AJAX. Die Location ist bei Microsoft Deutschland GmbH in Unterschleißheim (Infos), und die Teilnehmerzahl ist auf 15 beschränkt.

Inhalt 

Das Microsoft AJAX Framework hilft dem Entwickler Web Anwendungen für den Benutzer interessanter zu gestalten. Nachladen von Daten, Animationen oder Fortschrittsanzeige sind Features die sich mit wenig Aufwand umsetzen lassen. Dabei kann man weitestgehend auf die ausufernde Entwicklung von Javascript verzichten.
Dieses eintägige Training zeigt den aktuellen Entwicklungstand der Microsoft AJAX Library und deren Anwendung.

Agenda

  • AJAX Kickoff
  • JScript Erweiterungen
  • Web Service einbinden
  • Server Controls
  • Ajax Control Toolkit
  • Ajax Futures
  • Anwendungsfälle

Weitere Details gibts im glengamoi-Blog.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , | Categories: Components, Development Posted by AlexanderZeitler on 1/7/2007 9:09 PM | Comments (1)

Peter Forstmeier hat gestern Build 48 von SharpReport fertiggestellt, welcher vor allem Performanceverbesserungen bei der PDF-Generierung beinhaltet.

SharpReport ist eine open source .NET-Reporting-Komponente, die zunächst als Bestandteil von #develop entwickelt wurde, jedoch inzwischen auch standalone verfügbar ist.

Um nun einen einfachen Report als PDF in einer ASP.NET-Seite darzustellen, sind folgende Schritte nötig:

Zunächst wird die SharpDevelop.SharpReport.exe im bin-Verzeichnis gestartet und ein Report erzeugt:

Durch Rechtsklick auf Database Connections erscheint das Kontext-Menü, in dem Add Connection ausgewählt wird:

Danach erfolgt die Auswahl des Datenbank-Providers:

Im Anschluß daran wird die Datenbankverbindung definiert: 

Danach wird das SQL-Kommando ausgewählt bzw. eingegeben:

Nach dem Klick auf "Next" werden die Daten, die das Kommando zurückliefert, angezeigt:

Und nach dem Klick auf "Finish" wird der Report erzeugt:

Der Report ist dann in dem Verzeichnis der Website abzuspeichern.

Um nun den Report mit aktuellen Daten als PDF in der Seite anzeigen zu lassen, ist zunächst eine Referenz in dem Web-Projekt notwendig:

  • SharpDevelop.SharpReport.exe (aus dem bin-Verzeichnis)
  • SharpReportCore.dll (in bin\AddIns\SharpReport)

Weiter sind drei using-Direktiven in der .aspx.cs zu definieren:

using SharpReportCore;
using SharpReportCore.Exporter;
using SharpReportCore.Exporter.ExportRenderer;

Die notwendige Page_Load-Methode sieht dann wie folgt aus:

protected void Page_Load(object sender, EventArgs e) {
    SharpReportEngine engine = new SharpReportEngine();
    string reportPath = Server.MapPath("SharpReport1.srd");
    PageBuilder pageBuilder = engine.CreatePageBuilderSyncron(reportPath);
    pageBuilder.BuildExportList();
    PdfRenderer pdfRenderer =         ExporterFactory.Create(GlobalEnums.OutputPresentationType.PDF) as PdfRenderer;
    pdfRenderer.Pages = pageBuilder.Pages;
    string outputPath = Server.MapPath("SharpReport1.Pdf");
    pdfRenderer.FileName = outputPath;
    pdfRenderer.ShowOutput = false;
    pdfRenderer.Start();
    pdfRenderer.Procces();
    pdfRenderer.End();
    Response.ContentType = "Application/pdf";
    Response.WriteFile(outputPath);
    Response.End();
}

Das Resultat ist ein Report im PDF-Format im Browser:

tags:  

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: | Posted by AlexanderZeitler on 1/6/2007 10:01 PM | Comments (0)

Nachdem ich beim Erstellen meines ersten sequentiellen Workflows mit der Windows Workflow Foundation über etliche Samples gestolpert bin, die noch auf Betas basieren (und somit nicht mehr sinnvoll verwendetbar sind, da z.B. der Parameter Editor seit Beta 2 verschwunden ist), hier ein kleines HowTo für einen einfachen sequentiellen "Hello World"-Workflow:

Zunächst erzeugen wir in Visual Studio 2005 ein neues C#-Projekt vom Typ Sequential Workflow Console Application:

Danach präsentiert sich der Workflow-Designer wie folgt:

Im nächsten Schritt ziehen wir eine Code-Activity aus der Toolbox links in den Designer in der Mitte:

Ein Doppelklick auf die Code-Activity öffnet den Code-Editor. Dort setzen wir in die hierdurch erzeugte Methode codeActivity1_ExecuteCode_1 den obligatorischen Hello-World Code:

private void codeActivity1_ExecuteCode_1(object sender, EventArgs e) {
    Console.WriteLine("Hello World from WF!");
    Console.ReadLine();
}

Das Ausführen des Workflows sollte folgendes Resultat liefern:

Will man dem Workflow nun Parameter (z.B. Vor- und Nachname) übergeben, sind folgende Erweiterungen notwendig:

Dem Workflow (Workflow1.xoml.cs) müssen zwei Properties hinzugefügt werden:

private string firstName;
private string lastName;

public string FirstName {
    get { return firstName; }
    set { firstName = value; }
}

public string LastName {
    get { return lastName; }
    set { lastName = value; }
}

In der Program.cs müssen die Parameter inkl. der Werte dann noch an die CreateWorkflow-Methode übergeben werden:

Dictionary parameters = new Dictionary();
parameters.Add("FirstName", "Alexander");
parameters.Add("LastName", "Zeitler");

WorkflowInstance instance = 
	workflowRuntime.CreateWorkflow(typeof (HelloWorldSequentialWorkflowConsoleApplication.Workflow1), parameters);

Um beim Aufruf des Workflows nun die übergebenen Parameter auszugeben ist die codeActivity1_ExecuteCode_1-Methode anzupassen:

Console.WriteLine("Hello {0} {1} from WF!", firstName, lastName);

Das Resultat:

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , | Posted by AlexanderZeitler on 1/2/2007 6:26 PM | Comments (0)

Will man eine Template via LoadTemplate-Methode inkl. DataBinding z.B. in einen Repeater definieren, löst man das wie folgt:

  1. Template in einem .ascx-File definieren, z.B.:
    <%@ Control Language="C#" ClassName="AdminMenuTemplate" %>
    <asp:HyperLink ID="EditHyperLink" runat="Server" NavigateUrl='<%#DataBinder.Eval(DataBinder.GetDataItem(Container),"Key")%>' Text="Test">
    

    Wichtig ist hierbei, dass man nicht, wie im Repeater direkt oder anderen DataBoundControls einfach Eval("Key") verwenden kann, sondern den entsprechenden Container referenziert.
    Die Syntax unter ASP.NET 1.1 ist übrigens
    (Databinder.Eval(Container.DataItem, "Key"))
    
  2. Definieren und Laden der ItemTemplate (z.B.):
    repeater.ItemTemplate = this.LoadTemplate("~/admin/UI/Controls/AdminMenuTemplate.ascx");
    
  3. Definierte ITemplate instanziieren:
    repeater.ItemTemplate.InstantiateIn(repeater);
    
  4. DataBinding ausführen:
    repeater.DataBind();
    

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5