Modifikace vzhledu browse
Za pomoci hidden parametru CellRenderer je možné při renderování browse modifikovat vzhled jednotlivých buněk. Při renderování každé buňky se volá funkce zadaná v hodnotě parametru. Předpokládá se že funkce je zapsaná přímo ve stránce v tagu „script“.
Zápis hidden parametru pro funkci myCellRenderer
<input type="hidden" name="CellRenderer" value="myCellRenderer">
Na vstupu má funkce následující atributy a předpokládá se návrat modifikovaného atributu defaulthtml nebo null, pokud nic nemodifikujeme.
Argumenty každé takto volané funkce jsou:
- row - číslo řádku
- columnfield -pole (jqx)
- value - hodnota pole
- defaulthtml - DOM objekt buňky browse
- columnproperties - vlastnosti sloupce (jqx)
- field - název pole
- rowData - rowData - dvourozměrné pole s hodnotami všech položek v datovém řádku, nad nímž se funkce volá. Prvním rozměrem je jméno položky, druhým pak její hodnota.
Následná funkce může vypadat třeba takto:
Provádí Removing trailing zeros / potlačení koncových nul u sloupce HDPRODCENA
<script>
var formatNumber = function (num) {
return new Intl.NumberFormat("cs-CZ", {
minimumFractionDigits: 0,
maximumFractionDigits: 20 // dostatečně velké, aby zachytilo všechny
}).format(num);
}
var myCellRenderer = function (row, columnfield, value, defaulthtml, columnproperties, field, rowData) {
if (field.name == 'HDPRODCENA'){
if (value != null || value != "")
defaulthtml.innerText = formatNumber(value)
}
return defaulthtml;
};
</script>
Dalším příkladem může být doplnění třídy a na základě této třídy úprava vizualizace.
<!-- styl pro třídu nonNull-->
<style>
.nonNull {
/*jakákoli CSS vlastnost*/
}
</style>
<!-- doplnění třídy nonNull-->
<script>
var myCellRenderer = function (row, columnfield, value, defaulthtml, columnproperties, field, rowData) {
if (field.name == 'HDPRODCENA'){
if (value != null || value != "")
defaulthtml.classList.add("nonNull");
}
return defaulthtml;
};
</script>
S defaulthtml je možné manipulovat jak je potřeba, jen je nutné brát zřetel na to, že výrazná modifikace může spůsobit nefunkčnost Browse.