Tabele

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)
})
}
)