[[esp:extensions:ajax:ajaxcolumn]] tdb Aplication Server

Route:

Funktion ajaxColumn()

Verwendung nur innerhalb von ajaxTable()

        - Parameter
          - src
          - hidden
          - enabled
          - load
          - hint
          - sort
          - type
          - template
          - script
          - call
          - style
          - class
          - width


Parameter

src

Mit dem Parameter src wird der Name der darzustellenden Spalte beschrieben. Dieser muss exakt dem Feldbezeichner innerhalb der Datentabelle entsprechen (Groß-/Kleinschreibung beachten!). Für den Fall, dass die Tabelle mit subtables geöffnet wurde, kann hier auch die Link-Notation verwendet werden, um Werte aus einer übergeordneten Tabelle darzustellen. Also z.B. src="LinkFirma.Bezeichnung" um aus der angelinkten Firma die Bezeichnung darzustellen.
Desweiteren kann src auch einen Dummy-Wert erhalten, wenn als weiterer Parameter type="html", type="script" oder type="method" angegeben werden.

Die Angabe von src ist zwingend erforderlich.
hidden
Wenn für hidden der Wert true übergeben wird, so wird die Spalte nicht in der Tabelle dargestellt, kann aber in anderen Spalten (siehe Attribute template und script) referenziert werden.
Die Daten werden trotzdem vom Server übertragen.

Die Angabe von hidden ist optional.

enabled
Mit enabled="false" kann eine Spalte explizit definiert werden, die allerdings nicht vom Server ermittelt und auch nicht im Client dargestellt wird.
Per Javascript kann die Spalte dann zur Laufzeit enabled werden. Damit lassen sich z.B. dynamische Tabellen-Layouts-Wechsel realisieren.

Die Angabe von enabled ist optional.

load
Wird für eine Spalte load="false" eingegeben, so wird die Spalte dargestellt, erhält aber keine Daten vom Server.

Mit dem Aufruf
ajaxColumn('src="existierendesfeld" hidden="true"') ajaxColumn('src="nichtexistierendesfeld" mode="template" template="<b>%exitierendesfeld%</b>" load="false"')
erhält man keinen Serverfehler, da dieser nicht versucht die nicht-exstierende "nichtexistierendesfeld" Spalte zu lesen.

Die Angabe von load ist optional.===title

Der Parameter title enthält die Spaltenüberschrift, die im Kopf der Tabelle angezeigt wird, wenn im ajaxTable()-Aufruf header="true" definiert wurde. Wird title nicht explizit angegeben, so wird der Feldbezeichner (letztlich also der Wert von src) im Header angezeigt.

Die Angabe von title ist optional.

hint

Mit hint kann ein kurzer Erklärungstext zur Spalte angegeben werden, der dann als Fähnchen erscheint, wenn der Anwender mit dem Mauszeiger auf der Spaltenüberschrift verharrt.

Die Angabe von hint ist optional.
sort

Wenn im ajaxTable()-Aufruf bereits ein sort angegeben wurde, kann hier explizit für jede Spalte bestimmt werden, ob diese durch Anklicken der Spaltenüberschrift (aufsteigend/absteigend) umsortiert werden kann. Eine Spalte kann auch über eine andere Spalte sortierbar gemacht werden. Wenn also die darzustellende Spalte z.B. ein formatierter Zahlenwert in einem Stringfeld ist, kann eine Sortierung darüber zu unangenehmen Erscheinungen führen. Ein Datensatz mit "100,-" würde da noch vor "9,99" erscheinen. Existiert in der Tabelle nun ein weiteres Feld, dass den Betrag als unformatierten Zahlenwert bereithält, kann mit sort="Zahlenfeld" die Sortierung darüber erfolgen. Dem Anwender bleibt dies verborgen.
Um bei der normalen Sortierung nicht jedesmal den Feldbezeichner redundant angeben zu müssen, genügt hier ein @ als Wert: sort="@". Dadurch wird die Spalte sortierbar und zwar genau über das dargestellte Tabellenfeld.

Wichtig: Spalten mit Inhalten, die über die Link-Notation ermittelt werden können nur über den numerischen Wert des Linkfeldes sortiert werden, nicht über die Spalten hinter dem Punkt. Auch Spalten, deren type auf html oder method gesetzt wurden können nicht sortiert werden.

Die Angabe von sort ist optional.

type

ajaxColumn() unterscheidet zwischen diesen vier Spalten-Typen:


Die Angabe von type ist optional.


template

Der Parameter template steht in direktem Zusammenhang mit einem type="html" und findet auch nur dort Verwendung. Es gilt zu beachten, dass die Struktur der Tabelle nicht durch das HTML-Fragment gestört werden darf, also z.B. kein </TD> enthält.
Da bereits der Aufruf von ajaxColumn() die Anführungszeichen und den Apostroph beansprucht, bleibt für HTML-Attribute oder JavaScript-Parameter kein reguläres Anführungszeichen mehr übrig. Hier kann mit einem \' (Escapeder Apostroph) Abhilfe geschaffen werden. Innerhalb des HTML-Fragments kann auf die Inhalte anderer Spalten (vom type data) zugegriffen werden, indem man deren Namen in %-Zeichen einfasst.
Zur verdeutlichung einige Beispiel-Spaltendefinitionen:

Beispiel 1
ajaxColumn('src="Nachname" hidden="true"') ajaxColumn('src="AutoID" hidden="true"') ajaxColumn('src="dummy" type="html" template="<a href=\'?@@/formular&AutoID=%AutoID%\'>%Nachname%</a>" sort="Nachname" title="Nachname"')

Zeigt den Nachnamen als Hyperlink an, der zur Seite formular springt und als URL-Parameter die AutoID des Datensatzes übergibt.

Beispiel 2
ajaxColumn('src="AutoID" hidden="true"') ajaxColumn('src="dummy" type="html" template="<button onclick=\'openMoreInformation(%AutoID%)\'>Weitere Informationen</button>"')

Zeigt in jeder Zeile für diese Spalte einen Button mit der Aufschrift "Weitere Informationen" an. Beim Klick darauf wird die JavaScript-Funktion openMoreInformation() ausgeführt, die z.B. einen Dialog öffnen könnte, um Details zum Datensatz anzuzeigen.

script
Der Parameter script steht in direktem Zusammenhang mit einem type="script" und findet auch nur dort Verwendung. Es gilt zu beachten, dass die Struktur der Tabelle nicht durch die Rückgabe der aufzurufenden Funktion gestört werden darf, also z.B. kein </TD> enthält.
Da bereits der Aufruf von ajaxColumn() die Anführungszeichen und den Apostroph beansprucht, bleibt für JavaScript-Parameter kein reguläres Anführungszeichen mehr übrig. Hier kann mit einem \' (Escapeder Apostroph) Abhilfe geschaffen werden. Innerhalb des Funktionsaufrufs kann auf die Inhalte anderer Spalten zugegriffen werden, indem man deren Namen in %-Zeichen einfasst.
Zur verdeutlichung eine Beispiel-Spaltendefinitionen:

Beispiel 3
ajaxColumn('src="Name" hidden="true"') ajaxColumn('src="Status" hidden="true"') ajaxColumn('src="JSSpalte" type="script" script="baueJSSpalte(\'%Name%\',%Status%)"')
im JS-Bereich, oder einer JS-Datei:
function baueJSSpate(sName,iStatus) { var sReturn = "" if (iStatus == 1) sReturn = "<img src='@@@/images/gesperrt.png'> <span style='color:red;'>"+sName+"</span>" else sReturn = "<img src='@@@/images/entsperrt.png'> <span style='color:green;'>"+sName+"</span>" return sReturn }

Das Beispiel zeigt, wie man sich die Fähigkeiten von JavaScript zu Nutze machen kann. Hier wird der Inhalt von Name in Abhängigkeit vom Inhalt des Feldes Status grün oder rot dargestellt und ein jeweils passendes Icon vorneweg angezeigt.



call

Mit dem Parameter call, der nur Verwendung findet, wenn type="method" gesetzt wurde, wird der Funktionsaufruf definiert.
Dabei wird der Name der Prozedur durch ein @ vom Pfad/Namen des Moduls bzw. des dazugehörigen PRGs getrennt übergeben.
Also z.B. call=getLaenderVorwahl@helpprocs.
Dabei gilt, dass das PRG relativ zum CONTEXT-Pfad gesucht wird (hier also ../webapps/XYZ/helpprocs)

Wichtig: Der Rückgabewert der Funktion muss vom Typ STRING sein.

style

CSS-Inline-Angaben können im Attribute style gemacht werden. Dabei werden etwaige CSS-Regeln aus der/den in class angegebenen CSS-Klassen überschrieben.

Beispiel style="width:500px; border-color:green;"

Die Angabe von style ist optional.

class

Mit class können eine oder mehrere CSS-Klassen bestimmt werden, die auf die Zellen der Spalte wirken sollen. Ein class="meineSpalte" belegt die Zellen also mit der Klasse meineSpalte, die letztlich nur noch "irgendwo" definiert sein muss.

Die Angabe von class ist optional.

width

Mit dem Attribut width kann man die Spaltenbreite festlegen. Dabei ist zu beachten, dass man die Einheit (also z.B. px oder %) mit angibt.
Werden keine Spalten
Beispiel width="150px"

Die Angabe von width ist optional.
esp:extensions:ajax:ajaxcolumn, Rev. 41, Zuletzt geändert 2006-11-29 09:59, 956 Aufrufe
Wiki hosted for free at wikihost.org || RSS-Feed || GeboGebo 1.3.3 || 00.989 Sekunden || || PAGERANK TOOLS