A Form nézet a List nézet egyetlen sorát mutatja meg részletesen egy dialógus ablakon. Ezen az
ablakon lehet új adatokat felvinni illetve azokat módosítani. A folyamatot a kliens kezdeményezi az
entitás azonosítója illetve módosítás esetén a korábban kapott kulcs átadásával. A szerver ellenőrzi
a kérést, és ha azt helyesnek és a klienst arra jogosultnak találja, akkor az entitásban meghatározott
minden adat beolvasásra kerül, új felvitel esetén az előre beállított vagy az alapértelmezés szerint
üres rekord jön létre.
Az adatokat egy automatikus (vagy egyedileg definiált) template alapján, az entitás-ban meghatározott
paraméterek figyelembevételével elkészíti a kliensen megjelenő HTML kimenetet. A típustól és
paraméterektől függően különböző megjelenítés és viselkedés megadható, mint pl. dátum mező
jelölőnégyzet, listák más táblából választás csak olvasható mezők, kötelező mezők, ellenőrzések,
hibaüzenetek, tooltip és számos egyéb funkció. A dialógus vizuális megjelenítése az
adminisztrátori funkciókban
egy arra kialakított
felületen kényelmesen szerkeszthető, amit a program szabványos CSS formátumban eltárol, és ez a későbbiek
folyamán akár manuálisan is szerkeszthető.
A kliensen végzett módosítások után - amennyiben a kliensoldali ellenőrzések sikeresen lefutottak - a
kliens a módosított adatokat visszaküldi a szervernek. A szerver a kapott adatokat ellenőrzi,
majd a teljes rekordot típusosan létrehozza. A rendszer képes a teljes műveletet automatikusan
(bármilyen hozzáadott kód nélkül) elvégezni. RecroSec használatával a teljes mező szintű jogosultság
ellenőrzés, RecroTrack használatával pedig a teljes módosítási történet automatikusan létrejön.
A teljes folyamat alatt több belépési pontra is lehetőség van, mind kliens és szerveroldalon egyaránt.
Szerveroldalon tipikusan a bonyolultabb szerveroldali ellenőrzések kerülnek megvalósításra, és az
esetleges üzeneteket a rendszer mezőhöz kötötten képes visszaküldeni a kliensnek.
A RecroGrid Framework az adatok felvitelére és módosítására a List nézettől eltérő, egy rekord megjelenítésére alkalmas Form
nézetet használ. A Form nézet automatikusan létrejön, de a megjelenítendő mezők típusa és elrendezése testre szabható.
Az adatmezők elsődleges megjelenítési formája, azok típusától a FormType-tól függ.
StaticText
a mezőt statikus szövegként jeleníti meg a Form nézetben, de a szűrőben EditBox formában illetve ha a
ListType=Image,
akkor a statikus kép, IMG HTML tag-ben jelenik meg.
ImageInDB az adatbázisban
tárolt képek kezelésére. Részletes leírás az
adatkezelés fejezetben.
Egyszerű típusos mezők
CheckBox a jelölőnégyzet típusú megjelenítés,
a Boolean (adatbázisban bit) típusú mezők megjelenítésére. A rendszer automatikusan csak a True/False illetve 1/0 értékeket
kezeli, ha a mező Nullable, akkor
DropDown típusú megjelenítést
alkalmaz. Egyéb egyéni adatok (pl.I/N) használatánál saját adatfeltöltés szükséges, vagy a
DropDown használata.
Date,
DateTime a dátum típusú mezők
megjelenítésére.
ListBox típus megjelenítés
elsősorban a List nézet használatát segíti, a néhány elemes (one to many) kapcsolatok esetén. A List nézetű használata az
adatkezelés fejezetben található. Form nézetben ennek a
típusnak csak olvasható formátuma megvalósított, módosítani nem lehet. Módosításhoz a beágyazott lista használata javasolt.
A RecroGrid típus esetén,
az aktuális rekordhoz, a logikai modellben meghatározott (one to many) kapcsolat alapján komplett RecroGrid
lista is megjeleníthető. Ezeket a Form nézetbe beágyazott listákat a rendszer automatikusan kezeli, külön feltételeket nem
kell megadni. Csak a kapcsolódó rekordok kerülnek megjelenítésre, és új felvitel esetén is automatikusan bekerülnek a
kulcsok, további manuális műveletekre nincsen szükség.
Note
Many to many kapcsolatok esetén, ha a kapcsoló táblában csak a kulcsok szerepelnek, akkor a logikai modellben csak két
entitás jön létre, amit a RecroGrid nem kezel. Ebben az esetben javasolt további mezőt felvenni (pl. rowversion
ami a RecroTrack működéséhez elengedhetetlen), és akkor a logikai modellben már mindhárom tábla szerepel, és a
one to many kapcsolatnak megfelelően lehet kezelni.
Lehetőség van a logikai modellben nem szereplő, vagy egyedi kapcsolat szerinti beágyazott listákra is. Ebben az esetben a
kapcsolatot (a RecroGrid
típussal megjelölt mezőnél) az RGO_ChildWhere
opciós paraméterben kell megadni NSQL formátumban. A kifejezés az aktuális context
és kulcs paramétereket kapja meg.
Beágyazott lista feltétel
//{0}=context, {1}=aktuális (parent) kulcs
exists(select A from {0}.tablename as A where A.Id={1})
Választás másik listából (many to one) kapcsolat.
Ha kapcsolat szerepel a logikai modellben, akkor automatikusa létrejön egy (vagy több, ha ugyanahhoz a táblához több kapcsolat van)
Entity típusú mező, a kapcsolatot
tartalmazó mező pedig az RGO_ForeignKey opciós
paraméterben kerül beállításra. A választás használatához fel kell venni egy
TextBox típusú mezőt, az
EntityBase tulajdonságba az Entitást (vagy a típusnak megfelelő RecroGrid), a névhez pedig
az Entitást nevet és azt a mezőt, ami a megjelenítésnél használatos, illetve amire a felhasználó szűrni tud. A mező
mellett megjelenik egy nyomógomb, aminek megnyomására megjelenik egy lista amiből választani lehet. A választás során a
kapcsolódó tábla kulcsa automatikusan a megfelelő mezőbe kerül, további műveletre nincs szükség. Ha felhasználó nem
választ csak a megjelenítéshez használt mezőt töltik ki, akkor a rendszer megpróbálja az alapján kikeresni a kapcsolódó
táblából a megfelelő rekordot és a kulcsok szerint összekapcsolja.
C#
//Entity típusú mező, első kapcsolathoz
EntityBase = Users
ColName = Users
RGO_ForeignKey = UserId //saját rekordban a mező neve
//TextBox típusú mező
EntityBase = Users
ColName = Users.UserName
//Entity típusú mező, második kapcsolathoz
EntityBase= Users
ColName = Users1
RGO_ForeignKey = UserId1 //saját rekordban a mező neve
//TextBox típusú mező
EntityBase = Users
ColName = Users1.UserName
Ha a kapcsolat a logikai modellben nem szerepel (pl. másik modelre hivatkozik), akkor magához a mezőhöz kell definiálni a kapcsolatot és a kulcsként használt mezőt.
C#
//TextBox típusú mező
EntityBase= Users
ColName = usr.UserName
RGO_OuterJoin: Users as usr on {0}.UserIdCol = usr.UserId
RGO_ForeignKey = UserIdCol //saját rekordban a mező neve
Ha a kapcsolt entitás nem szerepel az osztályban sem, akkor NSQL kifejezést kell használni.
C#
//Entity típusú mező
EntityBase = Users
ColName = Users
RGO_ForeignKey = UserId //saját rekordban a mező neve
//TextBox típusú mező
EntityBase = Users
ColName = NSQL:Users.UserName
RGO_InvalidForeignKey opciós beállításban
engedélyezhető, hogy a ForeignKey mezőbe érvénytelen adat is bekerülhessen.
Security Note
A választáshoz használt mező szerkesztésének letiltása esetén, a ForeignKey-ban megadott mezőt
is le kell tiltani, mert a választás közvetlenül azt módosítja, illetve ha annak módosítása nincsen engedélyezve, akkor
a választás sem működik.
Speciális típusok
RecroDict megjelenítés a
RecroDict szótár használatával. Mivel a RecroDict HTML elemeket is tartalmazhat, ezért
nagyon jól használható előre formázott szövegek megjelenítésére. A hatékonyságot tovább növeli az elemek
egymásba ágyazhatósága, és paraméterek átvételének képessége, ami az aktuális rekord mezői is lehetnek.
Formátum
<%Scope.StringId[,@ClientName,...]%>
C#
//RecroDict HTML elem megjelenítés. StringId a 31-es mező értékével kerül kiértékelésre.
Scope.@rg-col-31
//RecroDict HTML elem megjelenítés paraméter átadással.
Scope.StringId,@rg-col-31,@rg-col-32
//Szöveges beágyazás a mondatba, paraméter átadással.
<%%>Eleje ... <%Scope.StringId,@rg-col-31%> ... <%Scope.StringId,@rg-col-32%> ... vége.
HtmlEditor megjelenítés
WYSIWYG HTML szerkesztő SCEditor segítségével. Az editorhoz kapcsolódó esetleges beállításokat az
RGO_SCEditor opciós
paraméterben lehet megadni, JSON formátumban.
Az SCEditor megjelenítésére további lehetőség, ha a mező TextBox
vagy TextBoxMultiLine típusú,
és az RGO_HtmlEditor opciós beállítás
engedélyezve van. Ebben az esetben a mező mellett megjelenik egy nyomógomb, és a HTML editor csak ennek a megnyomására jelenik meg.
Form nézetben a mezőket lapokra (tab) lehet csoportosítani. Az egyes fülek automatikusan létrejönnek, ennek kezelése külön feladatot
nem igényel. Ha egy mező FormTab paramétere 0,
akkor a mező Form nézetben nem kerül megjelenítésre. A mező pozícióját az adott oldalon a FormPos
paraméter határozza meg. A RecroGrid Framework tartalmaz egy (WYSIWYG) szerkesztő felületet a Form nézet kialakítására.
A szerkesztőben a FormTab és a FormPos
paramétereken kívül további stílusokat lehet beállítani, amit a keretrendszer szabványos (Style-Sheet) formátumban elment.
A stíluslapot mindig az RGO_FormStyleSheetURL
opciós beállításban megadott fájlba fogja menteni, illetve onnan beolvasni.
Az elmentett stílusokat manuálisan is lehet szerkeszteni, illetve az
RGO_FormElementClass és az
RGO_FormElementStyle opciós beállításban
paraméterezve befolyásolható.
Egyéb kiegészítők
RGO_HtmlTag opciós beállításban
megváltoztatható az alapértelmezett kimeneti HTML elem (tag).
RGO_Attributes opciós beállításban
egyéni HTML attribútumokat lehet definiálni.
RGO_NoLabel opciós beállításban
true paraméter letiltja a mező címkéjének a megjelenítését.
Note
A RecroGrid típusú
mezők címkéje nem kerül megjelenítésre.
RGO_FormLineBreak opciós beállításban
true paraméter esetén egy soremelés (<br/> HTML tag) kerül a mező elé. Ez a beállítás a
Form nézet szerkesztőjében is elérhető.
RGO_FormPreElements opciós beállításban
egy teljes (akár többszintű) HTML elem megadható az mező elé.
A paraméterben RecroDict szótár elem is megadható
<%%>Scope.StringId formátumban.
RGO_Password opciós beállítás
hatására a mezőhöz jelszóbeviteli elem (type=password) generálódik.
RGO_FormTab opciós beállítás
meghatározza Form nézetben a megadott oldalnak (tab) a címét. Az opció nevében jelölni kell az oldal sorszámát RGO_FormTab-X formátumban.
A paraméterben RecroDict szótár elem is megadható
<%%>Scope.StringId formátumban.
RGO_Tooltip opciós beállítás
segítségével Tooltip rendelhető a mezőkhöz.
A paraméterben RecroDict szótár elem is megadható
<%%>Scope.StringId formátumban. RecroDict használata esetén, az entitás opciós beállításában egy
Scope azonosítót lehet megadni a StringId-ba pedig a mezők
Alias azonosítója kerül, így nem kell külön minden mezőt paraméterezni.
RGO_ItemsTooltip opciós beállításban
egy DropDown típusú mező elemeihez
lehet Tooltip-et rendelni RecroDict szótár használatával. Az opciós beállításban a
Scope azonosítót kell megadni, a StringId-ba pedig az egyes elemek kulcsa kerül.
RGO_AjaxBinding opciós beállítás
meghatározza, hogy a DropDown
típusú mezők asszinkron módon kerüljenek feltöltésre. Használata nagyobb méretű, és/vagy intenzív használatnak kitett listák esetén ajánlott,
mivel a böngésző képes ezeket a gyorsítótárban elhelyezni, ezzel csökkentve az adatforgalmat.
RGO_SCEditor opciós beállításban
SCEditor opciókat lehet megadni JSON formátumban.