Hilfe-Center

ArticlePager

Ein ArticlePage ist ein Hilfsobjekt, um dynamisch Shapes, die Artikel darstellen, in verschiedensten Mengen, Sortierungen und Filterungen einfach erhalten zu können. Somit muss nicht für jeden einzelnen Shop eine eigene Sortier-, Filter- und Paging-Logik geschrieben werden.

Ein ArticlePager enthält eine Menge von Shapes, die er ordnet, filtert, zu Seiten zusammenfasst und ausliefert. Diese Menge an Shapes kann ihm per Konstruktor übergeben werden oder auch zur Laufzeit gesetzt werden. Auch können zur Laufzeit verschiedene Sortier- und Filterparameter gesetzt werden.
Zu beachten ist, dass jedes Setzen eines geänderten Werts eine interne Neuordnung der zugrundeliegenden Artikelliste bedeutet. Dies kann bei häufiger Anwendung und vielen Artikel durchaus in der Performance spürbar werden, sodass sich empfiehlt das Neusetzen der Parameter auf so wenige Stellen wie nötig zu beschränken.

Ein ArticlePager liefert immer im ViewMode die veröffentlichten und im EditMode die aktuell dort vorhandenen Shapes. Das Übergeben eines EditModes ist nicht nötig, das kann das Objekt selbst regeln.

Der ArticlePager selbst ist so geschrieben, dass er auf falsche Parameterwerte immer noch mit einer sinnigen Ausgabe versucht zu reagieren. Dies dient der Robustheit, kann aber eine Fehlersuche bei der Entwicklung erschweren, wenn z.B. nach einem falsch geschriebenen Attribut sortiert werden soll.

Es gibt den Pager auch im Javascript.

Konstruktor

ArticlePager(
     int ArticlesPerPage,
     IEnumerable<Core.API.iShape> BaseAmount = null,
     IEnumerable<FilterOption.Base> FilterOptions = null,
     IEnumerable<string> OrderByAttributeNames = null,
     bool DescendingOrder = false
)

Erzeugt ein neues Pager-Objekt.

  • ArticlesPerPage: Die Anzahl Artikel pro Seite. Muss ein ganzzahliger, positiver Wert sein. Wird ein negativer Wert angegeben, wird 0 einsetzt. 0 bedeutet alle Artikel auf eine Seite.
  • Optionale Parameter:
    • BaseAmount: Eine Liste von Shapes. Ist sie nicht angegeben, werden alle Artikel des Systems gewählt. Gibt man eine Menge von Shapes an, die Shapes enthält, die keine Artikel sind, werden diese ignoriert. Beachtet werden immer nur Artikel.
    • FilterOptions: Eine Liste von Filteroptionen. Details siehe unter FilterOptions.
    • OrderByAttributeNames: Die Namen derjenigen Attribute, nach denen geordnet werden soll. 
      Sortiert werden kann nach maximal drei Attributen ineinander geschachtelt. Das Erste in der Liste gibt die Hauptsortierung vor, usw. Werden Namen nicht existenter Attribute angegeben, werden diese ignoriert und nur diese, gültige bleiben beachtet. Ebenso ignoriert werden gültige Attribute, nach denen nicht sortiert werden kann (Typen Image, File, Link und Option).
      Achtung: Angegeben werden müssen die Attributnamen, nicht etwa der Wert des ShopEntity-Attributs in der Config.
    • DescendingOrder: Wenn mit true angegeben, wird nach dem gegebenen Sortierverfahren absteigend sortiert. Default ist false.
Copy

' Beispiel mit dynamischen Methoden, die die nötigen Werte aus einem abgesendeten Formular ermitteln

Dim Pager As New CONTAILOR.API.ArticlePager(
    GetNumberOfArticlesPerPage(),
    FilterOptions:=GetFilterOptions(),
    OrderByAttributeNames:=New List(Of String) From {GetOrderByAttributeName()},
DescendingOrder:=GetDescendingOrder()
)

 

Setzbare Propertys:

int ArticlesPerPage

Liefert die Anzahl Artikel pro Seite. 0 bedeutet alle auf einer Seite.

Wird ein negativer Wert gesetzt, wird 0 verwendet.

bool EditMode

Gibt an, ob der Pager mit EditMode- oder ViewMode-Objekten arbeitet (Edit oder Published-Stände).

Der Konstruktor setzt diesen Wert automatisch auf den aktuellen Wert des Systems, jedoch kann dieser bei Bedarf nachträglich geändert werden.

IEnumerable<Core.API.iShape> BaseAmount

Liefert den Bestand an Artikeln mit denen der Pager gerade arbeitet. Eine Sortierung nach den aktuellen Werten ist bei dieser Property nicht sichergestellt. Ist die Sortierung notwending, bitte GetAll() verwenden. BaseAmount dient nur der Information, was intern gerade gehalten wird und zum Setzen einer neuen Basismenge.
Beim Setzen werden Shapes, die keine Artikel sind, gefiltert. Diese werden also nie zurückgeliefert und verursachen keinen Fehler.

bool DescendingOrder

Wenn true, wird nach der vorgegebenen Sortierung absteigend sortiert, sonst aufsteigend.

IEnumerable<FilterOption.Base> FilterOptions

Liefert bzw. setzt die Liste der Filteroptionen. Details hierzu unter FilterOptions.

IEnumerable<string> OrderByAttributeNames

Attribute, bzw. deren Namen, nach denen sortiert werden soll.
Zu beachten ist folgendes:

  • Es wird zunächst nach dem Ersten gegebenen, dann dem Zweiten usw. sortiert
  • Es kann maximal nach drei Attributen geschachtelt sortiert werden, werden mehr angegeben, werden die übrigen ignoriert
  • Ungültige Attribute, Nothing-Einträge, etc. werden ignoriert
  • Es kann nicht nach File-, Link-, Image- und Option-Attributen sortiert werden, solche werden auch ignoriert
  • Mehrfachangaben des gleichen Attributs werden ignoriert, die erste Position greift

Info: Es wurde ursprünglich versucht, hier auf Attribut-Objekten zu arbeiten, dies erwies sich aber als wenig praktisch, da man sie nicht parat hat, daher wurden die Namen verwendet.

 

Readonly-Propertys und Funktionen

int NumberOfArticles

Liefert die Anzahl aller Artikel, die der Pager in der aktuellen Konfiguration (Filterung) beinhaltet.

Info: Entspricht GetAll().Count

int NumberOfPages

Liefert die Anzahl Seiten, die der Pager mit der aktuellen Konfiguration hat.

IEnumerable<Core.API.iShape> GetCurrentPage()

Liefert die Artikel der aktuellen Seite. 

Hinweis: Man kann mit den Funktionen NextPage, PreviousPage und GoToPage navigieren, d.h. der Pager merkt sich, auf welcher Seite er gerade steht. 

IEnumerable<Core.API.iShape> NextPage()

Liefert die Artikel der nächsten Seite.

IEnumerable<Core.API.iShape> PreviousPage()

Liefert die Artikel der vorherigen Seite.

IEnumerable<Core.API.iShape> GoToPage(int Number)

Gibt die Artikel der angeforderten Seite zurück.

  • Number: Die Nummer der gewünschten Seite. Ist sie 0, negativ oder größer als die Anzahl verfügbarer Seiten, wird eine leere Menge geliefert.

IEnumerable<Core.API.iShape> GetArticlesAt(int StartPos, int Amount)

Liefert eine bestimmte Menge von Artikeln ab einer gegebenen Position. Dies veranlasst den Pager nicht, intern zu dieser Position zu gehen.

  • StartPos: Die Position, ab der Artikel geliefert werden sollen. Gibt es diese Position nicht, wird eine leere Liste geliefert.
  • Amount: Die Anzahl zu liefernder Artikel. Gibt es weniger als angegeben werden die verfügbaren geliefert.

IEnumerable<Core.API.iShape> GetAll()

Liefert alle Artikel im Pager unter Beachtung aller eingestellten Filterungs- und Sortieroptionen.

War dieser Beitrag hilfreich?
1 von 1 fanden dies hilfreich.
Es ist ein technisches Problem aufgetreten. Bitte wenden Sie sich telefonisch oder per E-Mail an uns.