Printerless-Modus in einer Web-Anwendung verwenden

Einleitung

Im Folgenden zeigen wir, wie sich der mit List & Label 27 neu eingeführte Printerless-Modus mit nur wenig Aufwand auch in einer Web-Anwendung aktivieren lässt.

Umsetzung

Dabei gilt es zwischen dem Web Designer für Windows und dem vollständig browserbasierten Web Report Designer zu unterscheiden. Das unten aufgeführte Codebeispiel stammt aus dem mitgelieferten ASP.NET MVC Web Reporting Sample, welches Sie in Ihrer List & Label Installation in folgendem Verzeichnis finden:

..\Beispiele\Microsoft .NET\.NET Framework 4\ASP.NET\C#\MVC Web Reporting Sample\
..\Beispiele\Microsoft .NET\.NET Core 3.1\ASP.NET\C#\MVC Web Reporting Sample\

Web Designer

Da der Web Designer für Windows eine eigenständige Anwendung ist, muss dieser Modus über die Printerless-Eigenschaft (verfügbar ab Service Pack 27.004) der WindowsClientWebDesignerOptions Klasse an den clientseitigen List & Label Job übergeben werden. Das passiert in der Datei SampleController.cs:

...
var options = new WindowsClientWebDesignerOptions
{
	// Aktivieren des Printerless-Modus
	Printerless = true,

	// Die zum Report passende Datenquelle laden.
	// Der zweite Parameter (forDesign) kann dazu benutzt werden, einen eigenen
	// Provider (z.B. mit der Eig. MinimalSelect = false) für den Designer zu verwenden.
	DataSource = GetDataSourceForProject(reportRepositoryID, false),

	// Die Referenz auf das Repository muss an List & Label übergeben
	// werden, damit die Repository-ID des Projekts für 'AutoProjectFile' akzeptiert wird.
	FileRepository = GetCurrentRepository(),

	// Anstelle des lokalen Dateipfads wird bei Verwendung
	// von Repositorys die ID der Datei im Repository verwendet.
	ProjectFile = reportRepositoryID,
	ProjectType = RepositoryItemType.ToLlProject(GetCurrentRepository().GetItem(reportRepositoryID).Type)
};
...

Tipp: Unter Verwendung des Web Designers erfahren Sie, wie der Web Designer für Windows integriert werden kann und was dabei zu beachten ist.

Web Report Designer

Der vollständig browserbasierte Web Report Designer liefert hierfür die Methode OnProvideListLabel. In der Datei LLWebReportDesignerController.cs wird der Printerless-Modus direkt über die Eigenschaft Printerless des List & Label-Objekts aktiviert:

...
public override void OnProvideListLabel(ProvideListLabelContext provideListLabelContext)
{
	// Neues List & Label Objekt für den Web Report Designer erstellen
	ListLabel ll = DefaultSettings.GetListLabelInstance(provideListLabelContext.RepositoryId, null);
	
	// Aktivieren des Printerless-Modus
	ll.Printerless = true;

	// Neu erstelltes List & Label Objekt zurückliefern
	provideListLabelContext.NewInstance = ll;
}
...

Tipp: Unter Verwendung des Web Report Designers erfahren Sie, wie der vollständig browserbasierte Web Report Designer integriert werden kann und was dabei zu beachten ist.