1.3.5. Odlišení nebo zvýraznění záznamů (polí) v přehledu pomocí ikonek
V přehledu je možné u každého záznamu nebo jeho pole vyhodnotit nějaou logickou podmínku a na základě té podmínky přiřadit řádce (resp. poli) nějakou ikonku (z předem definovaných). Ikonka je tam pouze domalovaná a nemá datovou persistenci.
Chtěl jsem pořešit hlavně případ, kdy na záznam v číselníku je na základě nějakých pravidel již neplatný a aby tato informace byla dostupná uživateli vizuelně.
Jako příkald jsem zvolil třídu Rabaty. Pokud je na rabatu 'Zámek' nebo již prošel 'Datum platnosti do', označím záznam jako neplatný. Je třeba připravit potomak TabHandler a přepsat metodu OnRowRender. Příklad je tento:
[Trida(Constants.ct_rabaty)]
[Developed]
public partial class rabaty_handler_tab : TabHandler
{
public override void OnRowRender(System.Data.DataRow row, int PBRow, FastList fastList)
{
base.OnRowRender(row, PBRow, fastList);
if (row == null)
return;
DateTime datumDo = DateTime.Today;
bool zamek = false;
if (row.Table.Columns.Contains("datum_do"))
datumDo = UtilFunctions.ToDateTime(row["datum_do"], DateTime.Today);
if (row.Table.Columns.Contains("zamek"))
zamek = (Convert.ToString(row["zamek"]) == "A");
if (datumDo < DateTime.Today || zamek)
fastList.SetFieldIcon(row, "subjekty_reference_subjektu", FieldIcon.Invalid);
}
}
Výsledek je vidět na přiloženém obrázku.
Další varianty:
- Je možné přiřazovat i jiné ikony
- U jednoho pole je možné mít přiřazeno více ikon současně
- Je možné ikony zobrazovat pro různá pole
if (datumDo > DateTime.Today)
fastList.SetFieldIcon(row, "subjekty_nazev_subjektu", FieldIcon.ArrowLeft, FieldIcon.CheckMark, FieldIcon.LookAt, FieldIcon.Star, FieldIcon.BoxesBlue, FieldIcon.BoxesGreen, FieldIcon.BoxesRed);