Verwendung nur innerhalb von ajaxTable()
- Parameter
- src
- hidden
- enabled
- load
- hint
- sort
- type
- template
- script
- call
- style
- class
- width
- src
- hidden
- enabled
- load
- hint
- sort
- type
- template
- script
- call
- style
- class
- width
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.
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.
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.
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.
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.
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.
ajaxColumn() unterscheidet zwischen diesen vier Spalten-Typen:
- data: Der Typ data ist der default-Wert für type und muss nicht explizit gesetzt werden. Er wird verwendet, wenn normale Inhalte aus der Tabelle dargstellt werden.
- count: Mit count als type wird eine Spalte definiert, die eine fortlaufende Nummerierung der Datensätze anzeigt. Wenn also eine Tabelle 30 Datensätze zur Anzeige bringt, und diese mit je 20 Datensätze pro Seite darstellt, so erscheinen in dieser Spalte auf der ersten Seite die Nummern 1 bis 20 und auf der zweiten Seite die 21 bis 30.
- html: Der Wert html in type gibt an, dass ein HTML-Fragment dargestellt werden soll. Dies kann zum Beispiel ein normaler HTML-Link mit <a href=...></a> sein. Dabei kann auf Inhalte anderer Spalten zugegriffen werden, indem man deren Namen (aus dem entsprechenden src-Attribut) in zwei %-Zeichen einfasst. Das HTML-Fragment muss zusätzlich im Parameter template definiert werden.
- script: Der Wert script in type gibt an, dass zur Darstellung des Spalteninhalts eine JavaScript-Funktion verwendet werden soll. Die Aufzurufende JS-Funktion muss dann den Inhalt liefern. Dabei kann auf Inhalte anderer Spalten zugegriffen werden, indem man deren Namen (aus dem entsprechenden src-Attribut) in zwei %-Zeichen einfasst und als Parameter (Vorsicht, bei Strings escapen nicht vergessen) übergibt. Der Funktionsaufruf muss zusätzlich im Parameter script definiert werden.
- method: Ein type="method" führt auf dem Server eine beliebige Funktion für jedes Auftreten der Spalte aus. Dazu muss im Parameter call der Aufruf spezifiziert werden, der getätigt werden soll. Dieser wird in der Form PROCEDURE()@MODUL angegeben. Das Ergebnis der Funktion muss immer ein String sein, damit dieser in der Tabelle dargestellt werden kann.
Die Angabe von type ist optional.
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.
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.
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.
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.
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.
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
