combit List & Label 25 - .NET Online Web Help
combit.ListLabel25.Repository Namespace
Inheritance Hierarchy

If reports are to be used in distributed applications such as web applications, all required files need to be shared between the systems involved or between the client and the server and kept synchronized at all times. Hence, it is a good idea to save the project files in a central database. However, this solution can become rather complex, especially when a project references pictures, drilldown projects, and other external files via local data paths, which then also need to be valid on another system.

With repository mode, the use of local files in a project can be done away with entirely, and List & Label projects as well as all the files they require can be managed at a central location (the so-called repository) with little effort - such as in a database or by a web service.


Basic Principles

In repository mode, List & Label does not save and load the files used in a report on its own. Instead of file paths and names, unique repository IDs are used. You will need to implement the IRepository Interface yourself and pass it to the ListLabel object. From this point onwards, List & Label will query your user-defined repository for the file content belonging to a repository ID, or transmit the ID along with the corresponding file content to the repository to be saved. Whether the files in the repository are managed by an SQL database, a web service, or some other storage solution depends entirely on your IRepository implementation. In this case, loading and saving of entries in the repository takes place exclusively via streams.
The following schematic diagram shows how a report with the ID "123" is loaded via an IRepository implementation managing an internal SQL database:



All functions to which the file path of the project was previously passed are now assigned the repository ID instead:

// Without repository mode:
LL.Design(LlProject.List, "C:\Reports\Invoice.lst")

// With repository mode — also applies to Export() and/or Print():
LL.FileRepository = new MyCustomRepository(…);
LL.Design(LlProject.List, "repository://{53F875F0-6177-8AD5-01B44E3A9867}")

In repository mode, "files" become "repository items", and filenames become "repository IDs". In addition to its ID, each repository item possesses a type, a time stamp, and a descriptor (string with variable length which contains internal information). Hence, in addition to the file content, your repository implementation will also need to be able to save and retrieve at least these four pieces of information for each repository item.


Here you can find a instruction how to use the repository:

Using the Repository-Mode


You will find a complete simple repository implementation in the ASP.NET sample projects (class SQLiteFileRepository) which provides a repository with an SQLite database for data storage.



ClassHelper class for repositories to support the import of local files. See the IRepository-Interface for more information on repositories.
ClassRepresents an repository item in a repository.
ClassProvides access to the descriptors of repository items.
ClassProvides the predefined repository item types of List & Label.

Represents a storage for the files that a List & Label project depends on, e.g. drilldown projects, includes, images, shapefiles, etc.

Once a repository is active, those external files are referenced via an ID instead of local file paths. The IRepository implementation is responsible for storing and loading the contents and metadata information (RepositoryItemDescriptor) of the items in the repository.

A exemplary manual could be found at Using the Repository-Mode.

See Also


combit.ListLabel25 Assembly