Moduł Html udostępnia metody wspomagające tworzenie tabel, które użytkownik może posortować wg swoich potrzeb. Wyświetlanie takich tabel trzeba poprzedzić przygotowaniem odpowiedniego kodu CSS metodą sortTableCSS(). Kod ten powinien zostać umieszczony w odpowiednim arkuszu stylów.
Do tworzenia tabel służą metody sortTable(). Pozwalają one na wyświetlanie prostych, dwuwymiarowych tabel, umożliwiając dodatkowo według życzenia:
We wszystkich tych metodach nagłówki (postać i obsługę) określa się jako tablicę, której każdy element definiuje sposób wyświetlania jednej kolumny, w szczególności to, czy tabela może być sortowana (w obu kierunkach) po tej kolumnie i typ wartości w kolumnie (dopuszczalne są: "T"- tekst, "C"- currency, "D"- date, "I"- integer, "F"- float).
Dane do wyświetlenia (zawartość tabeli) mogą być przekazane jako lista (java.util.List) albo tablica. Można też przygotować własny kod jPALIO (palio.compiler.PalioCode) tworzący tabelkę, ze standardowymi znacznikami - wiersze <tr> i kolumny <td>. Należy pamiętać, że pierwsza kolumna listy (indeks 0) nie jest wyświetlana - musi zawierać używany wewnętrznie identyfikator (tzn. przygotowana do wyświetlenia tablica musi zawierać o jedną kolumnę więcej, niż wskazuje na to nagłówek).
Po wyświetleniu tabeli można dodać javascript, wstępnie sortujący jej pozycje.
Przykłady
Standardowa tabela sortowana:
$html.sortTable(
"processesTable",
"100%",
false,
[["Code", true, true, null, null, "T"],
["Name", true, true, null, null, "T"],
["Description", true, true, null, null, "T"],
["Frequency of execution", true, true, null, null, "T"],
["Frequency unit", true, true, null, null, "T"],
["Date of nearest execution", true, true, null, null, "D"],
["Edit", true, true, $pageID("system.processes.edit.page"), null, "T"]],
(List)$processesList,
false,
{<div class="info">"No data matching required criteria"</div>}
)
Definiowana przez programistę tabela z polami kontrolnymi, umożliwiającymi wskazanie wybranych pozycji
$html.sortTable(
"CustomersTable",
"90%",
false,
true,
[["", false, false, null, null, "T"],
["Customer’s first name", false, false, null, null, "T"],
["Customer’s surname", true, true, null, null, "T"],
["Company", false, false, null, null, "T"]],
{ $@=(index,0)
$for( customer, (List)$customersList, {
$if($==( $%((Long)$@index, 2), 0), { $@=(trClass, "normalRow") }, { $@=(trClass, "alternateRow") })
$@=(customerNo, (String)$customer[0])
$ifNotNull((String)$getParam($+("customer_", (String)$columnNo)), {
$@=(checked, true)
}, {
$@=(checked, false)
})
<tr class=$@trClass>
<td>$html.checkBox($+("customer_", (String)$customerNo), $@customerNo, (Boolean)$@checked, $+("customer_", (String)$customerNo), "style class=\"checkBox\" onchange=\"conditionallyDisableTextFieldsAndTestButton()\"")</td>
<td>$customer[1]</td>
<td>$customer[2]</td>
<td>$customer[3]</td>
</tr>
$++(@index)
})
}
)