Form nézet

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.

This topic contains the following sections:

Típustól függő megjelenítés

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.

This section contains the following subsections:

Form nézetű adatkezelés

Szöveges, numerikus és kép mezők

  • TextBox a legáltalánosabb típus, ami a legtöbb esetben alkalmazható EditBox típusú megjelenítés tesz lehetővé.

  • TextBoxMultiLine a többsoros szerkesztést valósítja meg.

  • 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.

Választások, kapcsolatok más listákkal

  • DropDown lenyíló lista típusú megjelenítés, feltöltés az RGO_DictionaryItems opciós beállítás szerint. Részletes leírás az adatkezelés fejezetben.

  • 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.

  • Custom megjelenítés lehetővé teszi Form nézetben a teljesen egyedi kialakítást RGO_PartialView használatával, vagy RGO_HtmlTag és RGO_Attributes megadással.

Partial View

Mezők stílusa, elrendezése, csoportosítása

This section contains the following subsections:

Form nézetű stílusbeállítás

Megjelenítés

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.

See Also

Other Resources