Fejlesztői kézikönyv 6.3

XML Referencia 6.3

Effector Studio 6.3 összefoglaló

Effector Studio 6.3 kézikönyv

Fejlesztői kézikönyv 6.2

XML Referencia 6.2

Effector Studio 3.2 összefoglaló

Effector Studio 3.2 kézikönyv

Fejlesztői kézikönyv 5.5

XML referencia 5.5

Effector Studio 2.0 kézikönyv

Effector Studio 2.0 összefoglaló

Táblázatok és PSearch-ök v5.4.001

Az első megjelenítő mellyel foglalkozunk a táblázatos megjelenítő, azaz a DGVC és a hozzá tartozó altípusok. Mint azt korábban már említettük a rendszerben több táblázatra alapuló megjelenítő objektum is rendelkezésünkre áll. Ezek valamennyien egy DGVC-ből származnak, így a lényegi különbséget a beállított HTML kód részlet jelenti. Később részletesen áttekintjük, miről is van szó.

A táblázatos megjelenítők önmagukban csak felület leíróként szolgálnak, ezért kapcsolódik egy adat definíciós fájl is mindegyik DGVC-hez. Ezt a fájlt DDO-nak azaz Display Definition Object-nek hívjuk. A DDO-k az adatforrást határozzák meg a különböző megjelenítők számára. Mind az adat definíció, mind a megjelenítő definíciója újra felhasználható.

Elhelyezkedése a rendszerben

Fizika helye az XML csomag Display könyvtárában van. A fájlok elnevezésére itt is van megkötés. A fájl nevének a dgvc{0}.xml mintára kell illeszkednie, ahol a {0} paraméter a DGVC egyedi azonosítója. A táblázatok mint megjelenítők mindig egy-egy komponensbe/komponens fülbe ágyazva jelennek meg.

Táblázatok a rendszerben

A fentieknek megfelelően mindenhol, ahol megjelenítők szerepelhetnek, szerepelhet DGVC is. Kapcsolata - a beágyazás miatt - a komponensre szorítkozik.

Altípusai

Mint azt fent említettük a DGVC mint megjelenítő több féleképp is megjelenhet a rendszerben. Az alábbi altípusokat mind egy-egy DGVC leíróban állíthatjuk be. Ezek az altípusok a következők lehetnek:

  • Grid: Táblázatos megjelenítő, szűrőkkel és exporttal, valamint összegző sor megjelenítésére csak ebben az altípusban van lehetőség. Megjegyzés! Az Effector 5.0.001-es verziójától a táblázat képes csoportosítani is a sorokat.
  • CardList: Az adatok soronként egy kártyán jelennek meg, amelyek mérete alapértelmezés szerint kötött és azonos. Az Effector ezeket a kártyákat amíg kifér vízszintesen egymás mellé helyezi, ha már nem fér el, új sort kezd. A kártyákat lehet csoportosítani is.
  • CardGrid: Olyan kártya nézet, ahol minden sorban egy-egy kártya helyezkedhet el. Megjegyzés! Az Effector 5.0.001-es verziójától ez a lehetőség már nem létezik.
  • TreeView: Fa szerkezet megjelenítésére használható. Legtöbbször folyamatok állapotának kirajzolására használt altípus.
  • Calendar: Naptár megjelenítő, mely a megszokott feladatnaptárak napi nézetéhez hasonlít, szűrők segítségével beállítható, hogy hány nap látszódjon.
  • SectionList: A CardViewhez hasonló megjelenítő, ebben az adatok kizárólag a rendezésnek megfelelő sorrendben jelenhetnek meg. Az egyes adatsorok megjelenítése egymás alatt, térköz nélkül, folytonosan történik. Kiválóan alkalmas az adatokból HTML-like oldal generálására.

Elérhető funkciók

  • Táblázatos nézet beállítása
  • Rekordok egyedi azonosítójának beállítása (Effector 5.2+)
  • Látható/kezelhető oszlopok meghatározása
  • Eszköztár láthatóságának beállítása (Effector 5.1+)
  • Eszköztáron található funkciók láthatóságának beállítása (Effector 5.1+)
  • Szűrők és akció gombok definiálása
  • Dinamikus táblázat használata
  • Altípusok és típus függő funkciók beállítása
  • Linkelt objektumok beállítása
  • Inplace editing felparaméterezése

Példa:

<DataGridViewClass>
    <Name>Users</Name>
    <Caption>Felhasználók</Caption>
    <OutFilterColumn>ID</OutFilterColumn>
    <DDO>DDBaseUsers</DDO>
    <BusinessObject idcolumn="ID">BusinessObjectUser</BusinessObject>
    <OrderColumn>PeopleName</OrderColumn>
    <DocumentDragAndDropPSearch>NewDocument</DocumentDragAndDropPSearch>
    <Columns>
        <Column name="PeopleName">
            <ColumnCaption>Felhasználó</ColumnCaption>
            <Visible>true</Visible>
        </Column>
        <Column name="ID">
            <Visible>false</Visible>
        </Column>
    </Columns>
        <ChainListNodes>
            <ChainListNode>
                <ClickedColumn>PeopleName</ClickedColumn>
                <KeyColumn type="ID">ID</KeyColumn>
                <LinkMM>MMUsers</LinkMM>
                <LinkScreen>ScreenUsers</LinkScreen>
                <LinkComponent>ComponentUserEdit</LinkComponent>
            </ChainListNode>
        </ChainListNodes>
    <PSearches>
        <PSearch id="NewUser" displaytype="ActionButton" actiontype="Link">
            <LinkMM>MMPEP</LinkMM>
            <LinkScreen>ScreenNewUser</LinkScreen>
            <LinkBusinessObject>BusinessObjectPeople</LinkBusinessObject>
            <LinkComponent>ComponentUserEdit</LinkComponent>
            <Caption>Új felhasználó</Caption>
            <Action>NewObject</Action>
        </PSearch>
    </PSearches>
</DataGridViewClass>

Táblázatos nézet beállítása

A dgvc azonosítóját több XML fájlhoz hasonlóan a gyökér elemben (DataGridViewClass) szereplő Name node értéke tartalmazza. Az azonosító megadása kötelező, és a konvencióknak megfelelően meg kell egyeznie a fájl prefix és kiterjesztés nélküli nevével. A gyökér elemben található egyszerű nodeok segítségével a következőket lehet beállítani:

  • A táblázatos megjelenítő címkéje, jelenleg nincs használva a felületen, kitöltése nem kötelező. Példa: <Caption>Felhasználók</Caption>
  • A DDO nodeban van lehetőségünk beállítani a táblázat adatforrását. Kitöltése kötelező, nélküle a DGVC nem rendelkezne adatforrással, így adatokat sem tudna megjeleníteni. A referenciát a DDO azonosítójával kell létrehozni: <DDO>DDBaseUsers</DDO>
  • Üzleti objektum megadására több okból is szükségünk van:
    • A adatok törlése miatt: Ez az objektum fogja kezelni a hozzá tartozó sorok törlését. Azonban nem elegendő csak az objektumot megadni, össze is kell kötni a megfelelő sorokkal. Ezt a BusinessObject node idcolumn attribútumának beállításával tehetjük meg. Az itt megadott oszlopból veszi ki a szükséges egyedi azonosítót a törléshez a rendszer.
    • A Filterek értelmezéséhez is szükséges kitölteni ezt a nodeot. Szerepe a táblázat betöltésekor van. Erről részletesen a Adat definíció és szűrés fejezetben olvashat.

Definícióját így adhatjuk meg:

<BusinessObject idcolumn="ID">BusinessObjectUser</BusinessObject>
  • Az OrderColumn node az adatok kezdeti rendezéséért felel, értéke egy oszlop azonosítóját (az oszlop definíció name attribútuma) tartalmazza. A rendezés irányát is megadhatjuk itt, a direction attribútum beállításával. Két értéket vehet fel ez a beállítás: Asc és Desc. Működésük megfelel az adatbázis kezelőknél alkalmazott rendezésnek.
  • Adatok transzponálása: Az ábrázolt adatok transzponálását a Style node beállításával tehetjük meg, lehetséges értékei a Grid mely a normál állapotot és Card ami a transzponált adatokat jelenti. Kitöltetlenség esetén alapértelmezett értéke Grid.
  • A komponensek közötti kommunikáció megköveteli az OutFilterColumn node beállítását. Értéke a kommunikációban elsődlegesen résztvevő oszlop azonosítóját tartalmazza. A megjelenítőben egy sorra (egyes altípusok esetén a rekordot reprezentáló elemre) kattintva aktivizálódik a kommunikáció és az itt meghatározott mező értéke kerül át az összekapcsolt komponensekhez, mint bemenő szűrő paraméter. A komponensek ezt értelmezik, és szükség esetén reagálnak rá.
  • Az Automatikus frissítést az AutoRefresh nodeban beállított értékkel szabályozhatjuk. Értéke percben értendő, a node hiánya, vagy nullára állítása esetén az automatikus frissítés funkció le lesz tiltva.
  • A táblázatos megjelenítők támogatják a lapozást is, ennek beállítására a RowsPerPage node és a RowsPerPage AllRowsMeans attribútuma szolgál. A RowsPerPage node-dal állíthatjuk be a lapméretet, és hogy hány sort töltsön le az Effector a rekord számlálóra kattintva. Ha értéke -1, akkor minden sort betölt. Ha az AllRowsMeans attribútum értéke 0, akkor ki van kapcsolva a funkció, -1 az összes sort jelenti. A node hiánya esetén az alapértelmezett értékek: RowsPerPage = 100 és AllRowsMeans = 0.
  • A egyszerű szűrő elrejtésére vagy megjelenítésére a SimpleFilter node használható értéke egy egyszerű boolean True vagy False. A node hiánya esetén az egyszerű szűrők megjelennek.
  • ColumnCaption: segítségével egy SQL lekérdezésben állíthatjuk be a megjelenítendő oszlop neveket. Ehhez az SQL nodeban kell megadnunk a szelekciót, mely egy Name és Caption oszloppal rendelkező eredményhalmazt reprezentál. A Name oszlop az oszlop nevét, a Caption pedig a feliratát tartalmazza.
  • IsColumnOptionVisible (Effector 5.4+): az oszlopok fejlécében található funkciógombok (minimalizálás, rendezés, egyszerű szűrő) láthatóságának ki/be kapcsolása. Helyettük egy ikon jelenik meg, és egérmutatóval fölé állva megjelennek az eredeti funkciógombok. Opcionális logikai paraméter, alapértelmezett értéke true.

Rekordok egyedi azonosítójának beállítása (Effector 5.2+)

A RowSelectionMethod segítségével megadhatjuk, hogy a kiválasztott rekordot mi alapján szeretnénk azonosítani. A rendszer minden sorhoz generál egy egyedi azonosítót, mely két lehetséges értéket vehet fel:

  • GeneratedGUID: ekkor a rendszer a generált azonosító alapján azonosítja a kijelölt sort. előny: egy sor biztosan kijelölhető hátrány: új rögzítés / refresh után mindenképpen az első sort fogja kijelölni.
  • BusinessObjectOrOutFilterColumn: a sor azonosítására a BusinessObject idcolumn attribútumának értékét veszi alapul, illetve az OutFilterColumn-ban megadott oszlopot veszi figyelembe a kijelöléskor előny: megjegyzi melyik sor volt kijelölve, illetve új felvitel után kiválasztja a sort (ha benne van a lekért oldalban) hátrány: egy azonosító több sort is jelenthet (paraméterezéstől függően jelöli ki helyesen a sorokat).

Eszköztár láthatóságának beállítása (Effector 5.1+)

A DisableToolbar segítségével módosíthatjuk az eszköztár láthatóságát. Opcionális logikai kapcsoló, alapértelmezett értéke: false.

Eszköztáron található funkciók láthatóságának beállítása (Effector 5.1+)

A ToolbarOptions node segítségével az eszköztár funkcióit tudjuk ki/be kapcsolni.

Opcionális attribútumai (logikai értékek, alapértelmezett értékük true):

  • showMultiSelectButton: többszörös kijelölés ki/be kapcsolása
  • showCardViewLayoutSwitchButton: csoportosítás orientációjának módosítása
  • showRowNumberSwitchButton: sorok sorszámozásának ki/be kapcsolása
  • showOpenColumnsButton: oszlopok kinyitása gomb láthatóságának ki/be kapcsolása
  • showToolsButton: eszközök gomb láthatóságának ki/be kapcsolása
  • gridViewGroup: táblázat eszköztáron a csoportosítás funkció láthatóságának ki/be kapcsolása

Látható/kezelhető oszlopok meghatározása

A táblázatban látható oszlopok beállítását és definiálását a Columns kollekción keresztül érhetjük el a Column node-ok segítségével. Az itt felsorolt oszlopok lesznek definiálva a táblázatban.

<Column name="PeopleName">
    <ColumnCaption>Felhasználó</ColumnCaption>
    <Visible>true</Visible>
</Column>
  • Minden oszlopnak rendelkeznie kell egy egyedi azonosítóval, amit a Column name attribútuma tartalmaz. Ez az azonosító egyben a DDO-ban szereplő oszlop neve is.
  • Az egyes oszlopokhoz, azok adatainak megjelenítéséhez formázás is beállítható. A formázás a displayFormat attribútum segítségével állítható be. Például: ezres csoportosítás # ### vagy # ###,00
  • Az oszlop fejlécében megjelenő feliratot a ColumnCaption node megadásával állíthatjuk be. Hiánya esetén a Column node name attribútuma fog megjelenni.
  • A Type node további lehetőséget biztosít az oszlopban megjelenő értékek alakítására. Értéke lehet: Date, DateTime, TextBox és ComboBox. Erről bővebben az inplace editing szakaszban lesz szó.
  • Width node segítségével az oszlopok szélessége állítható. Értékét pixelben kell megadni.
  • Multiline node beállításával lehetőség van több soros adat megjelenítésére is, ha a Style node értéke Card. Csak akkor él az opció, ha a Type nincs kitöltve, vagy TextBox az értéke.

Az oszlopra alkalmazható szabályok a következők:

  • Visible: Láthatósági szabály
  • Readonly: Olvashatósági szabály. Jelenleg csak a Grid altípussal működik együtt. Azt szabályozza, hogy a táblázatban történő szerkesztés engedélyezett-e, vagy sem.

Dinamikus táblázat használata

Dinamikus táblázatról akkor beszélhetünk, ha nem tartalmaz egyetlen oszlop definíciót sem valamint a /DataGridViewClass/Dinamic node értéke true. Ebben az esetben a rendszer a DDO-ból nyeri ki az összes rendelkezésre álló adatot, és az ott használt oszlop definíciókat felhasználva építi fel a megjelenítőt.

Bármilyen lekérdezés esetén használható, jelentősége abban rejlik, hogy dinamikus adatforrás esetén a rendszer automatikusan adaptálódik a beérkező rekordokhoz, így az oszlopok számossága is az adatforrás függvényében változhat.

Tipikus felhasználása például a naptári napok dinamikus megjelenítése egy táblázatban. Ekkor az adatbázisból egy transzponált adathalmazt kérdezünk le, ebben az esetben az egyes napok lesznek az oszlopok. Így szűréstől is függővé tehetjük a megjelenítést.

A dgvc xml fájlban ekkor is lehet definiálni oszlopokat, ilyenkor - ha a DDO - visszaadja az adott nevű oszlopt a rendszer kiolvassa a többi oszlophoz rendelhető beállítást (ColumnCaption, Visible, formázások).

A pivot lekérdezések esetén az oszlopok neve általában egy id. ilyenkor ColumnCaption tagban meg lehet adni az egyes azonosítókhoz tartozó értékeket. A ColumnCaption node-nak lehet egy processtype nevű attribútuma a következő értékekkel SQL, XML.

  • SQL: Ez az alapértelmezett, ilyenkor egy SQL mondatot kell megadni, amely visszaadja az egyes azonosítókhoz az oszlop címkét. Az SQL mondatnak Name és Caption oszlopokkal kell, hogy visszatérjen.
  • XML: Ebben az esetben a ColumnCaption node egy Caption node-okból álló kollekció. A ColumnCaption kollekcióban megjelenített Caption node-ok columnName attribútuma tartalmazza az azonosítót (oszlop nevet) a node értéke pedig a megjeleníteni kívánt feliratot.

Szűrők és akció gombok definiálása

A rendszerben PSearch-nek nevezzük azokat a beviteli mezőket és gombokat, amelyek a táblázatos megjelenítő felett kaptak helyet, és az adott táblázat adatait szűrik, vagy azon végeznek műveleteket.

PSearch-ek

Definíciójukra a /DataGridViewClass/PSearches/PSearch listában van lehetőségünk. Működésükre azonban hatással vannak a következő magasabb szinten beállítható értékek is:

  • /DataGridViewClass/PSearchHandlingMethod (Effector 5.0.000- és Effector 5.4+): Ezzel be lehet állítani, hogy a táblázathoz tartozó szűrőmezők milyen esemény hatására indítsák el az adatlekérést a szervertől. Értéke lehet: OnValueChange, OnRefreshButton. OnRefreshButton esetén a felületen megjelenő 'szűrés' gombot kell megnyomni a beállított szűrések alkalmazásához. Ebben az esetben a szűrés érvényre juttatása manuálisan történik, vagyis nem minden egyes szűrő változtatásakor történik meg az adatlekérés.

Megjegyzés! Effector 5.0.001 verzióig, és Effector 5.4 verziótól használható beállítás.

<PSearchHandlingMethod>OnValueChange</PSearchHandlingMethod>

  • DocumentDragAndDropPSearch: Abban az esetben használható, ha a táblázatban van olyan PSearch, amely Dokumentumok felvételére szolgál. A node értéke egy PSearch referencia, mely a PSearch egyedi nevét tartalmazza. Ilyenkor kártya nézet esetén a dokumentumot az adott objektumhoz be lehet csatolni a kártyára húzással.

Megjegyzés! Csak CardList megjelenítőn!

Megjegyzés! Az Effector 5.0.001-es verziójától ez a lehetőség nincs megvalósítva.

A vezérlő (PSearch) beállításhoz felhasználható attribútumok:

  • id: A vezérlő egyedi azonosítója. Nem lehet egy DGVC-n belül kettő azonos.
  • displaytype: PSearch vezérlő típusát határozza meg. A későbbiekben részletesen foglalkozunk ezen típusok beállításával. Lehetséges értékei:

    • ActionButton: Egy nyomógombot reprezentál, amely különböző funkciókkal rendelkezhet. Például: új objektum felvitele, objektum törlése, egy külső modul egy funkciójának meghívása, stb...
    • TextSearch: Egysoros szövegszerkesztő vezérlő a szöveges kereséshez.
    • ComboSearch: Adott értéklistából történő szűrést valósít meg egy ComboBox vezérlővel.
    • BoolSearch: Bool típusú adatoszlopra tudunk vele szűrni. Három állapotú jelölőnégyzet vezérlővel.
    • DateSearch: Dátum szűrést tesz lehetővé, dátum-kiválasztó vezérlővel.
    • DateRange: Dátum intervallumszűrést valósít meg.
    • TagCloud: Címkefelhő szűrés.
    • QuerySearch: ComboBox-hoz hasonló szűrő, ám ilyenkor egy választó ablak ugrik fel (táblázatból lehet értéket választani)
  • filtertype: A program jelenleg nem használja, értéke lehet simple és complex.

A beállításhoz felhasználható közös al-node-ok:

  • ConnectedColumn: A szűrőhöz kapcsolt oszlop. Itt egy érvényes SQL kifejezést/vagy SQL oszlopot kell megadni, amely a DDO SQL mondatára alapszik, abba illeszkedik. Esetenként a tábla minősítés használata is elkerülhetetlen. például: <ConnectedColumn>pep.PeopleID</ConnectedColumn>

  • Operator: A szűréshez használható SQL operátor. Az operátorok felhasználása nem minden PSearch esetében lehetséges, például dátum intervallum esetén nem használható a like operátor... Felhasználási módjuk megegyezik az SQL szerverben tipikusan használható where operátorokéval. A lehetséges értékei:

    • %like%, like%, %like
    • =, <, >, <=, >=, <>
    • in: ilyenkor a Query node megadására is szükség van, mely a kifejezés jobb oldalán szereplő eredményhalmazt fogja előállítani.
    • between: dátumintervallumok esetében használható, a {0} helyére a kezdő, a {1} helyére a vég dátum kerül bele. pl.: <ConnectedColumn>(f.Hatarido BETWEEN '{0}' AND '{1} 23:59:59.999')</ConnectedColumn>
  • Caption: A szűrő feletti felirat, vagy a nyomógomb felirata.
  • Query: Ez kizárólag az in operátor esetében használható elem. Itt egy SQL where mondatrészt kell megadni, amely a ConnectedColumn-ban megadott oszlophoz állítja elő a kiértékelendő kifejezés jobb oldalát. Tehát a szűrés során előállított SQL kifejezés WHERE része a következő résszel fog kibővülni: ConnectedColumn in (Query tartalma). Ha Query értéke tartalmazza a #param# karakterláncot, akkor annak helyére lesz beillesztve a PSearch értéke. Ez tipikusan a Query nodeban elhelyezkedő select utasítás szűrésére használható fel.
  • Width: A kontroll szélességét szabályozza.
  • DisplayOver: Ha a szűrőmezőt nem a PSearchPanel-en szeretnénk megjeleníteni, hanem a táblázat egy oszlopának fejléce alatt, akkor be kell állítanunk ezt a node-ot. Értéke annak az oszlopnak a name attribútuma, amely fejléce alatt szeretnénk, hogy megjelenjen a szűrőmező. Opcionális.

A beállításhoz felhasználható szabályok:

  • Visible: Láthatósági szabály
  • Readonly: Olvashatósági szabály, a szerkeszthetőséget szabályozza.
  • DefaultValue: Alapértelmezett érték szabály, a szűrőben levő alapértelmezett értéket lehet vele beállítani
  • SessionValue: Beviteli mezkőn található "házikó" ikon kiértékeléséhez használható szabály. Ha a kontrollhoz nincs beállítva SessionValue szabály, akkor meg sem jelenik az ikon.
  • ComputedValue: Számított mező kiértékeléséhez használt szabály. Ezzel a beállítással a filter-ből érkező érték alapján lehet dinamikusan kiszámolni egy szűrő értékét.
  • Tooltip: Ezzel a beállítással lehet magyarázó szöveget (aka. tooltip) paraméterezni a szűrőhöz.

Példák:

Egyszerű szöveges szűrőmező:

<PSearch id="DescriptionText" displaytype="TextSearch" filtertype="simple">
    <Caption>Leírás</Caption>
    <ConnectedColumn>e.Description</ConnectedColumn>
    <Operator>like%</Operator>
</PSearch>

Egyszerű szöveges jelölő négyzet:

<PSearch id="DoneCheckBox" displaytype="BoolSearch" filtertype="simple">
    <Caption>Kész</Caption>
    <ConnectedColumn>e.Done</ConnectedColumn>
    <Operator>=</Operator>
    <DefaultValue type="Constant">false</DefaultValue>
</PSearch>

Most áttérünk az egyes PSearch-ök altípusainak definiálására, azaz a típus függő speciális beállításokra.

ComboSearch

Az itt szereplő beállítás segítségével egy PSearch-öt tehetünk ComboSearch-é, amely egy legördülő listára épülő szűrőmező. Hasonlóan a "normál" legördülő listához itt is a ComboDescription node játssza a meghatározó szerepet. Ez a node egy referenciát tartalmaz a felhasználandó leíróhoz, mely meghatározza a legördülő lista tartalmát. Bővebb információt a ComboDescription fejezetben talál.

<PSearch id="FelelosComboBox" displaytype="ComboSearch" filtertype="complex">
    <ComboDescription>ComboFejlesztok</ComboDescription>
    <Caption>Felelõs</Caption>
    <ConnectedColumn>pep.PeopleID</ConnectedColumn>
    <Operator>in</Operator>
    <Query>(select GroupID from PeopleGroupsPeople with (nolock)  where Deleted = 0 and PeopleID = `#param#` union select PeopleID from People with (nolock) where PeopleID = `#param#`)</Query>
    <DefaultValue type="Constant">`[##Session.UserID##]`</DefaultValue>
</PSearch>

ActionButton

Új felvitel, sor törlés, képernyő megnyitás, különböző egyedi logikák megvalósítására alkalmas "szűrő mező típus".

Gomb kinézetének módosítása (Effector 5.3+): ButtonLooksLike node segítségével. Opcionális. Link típusú ActionButton esetén használható. Megadhatjuk, hogy az adott gomb melyik gombra hasonlítson kinézetre. Lehetséges értékei: DeleteObject, CancelButton, NewObject.

Ebben a példában új esemény rögzítését fogja elvégezni a gomb:

<PSearch id="NewEvent" displaytype="ActionButton" actiontype="Link">
    <LinkMM>MMPEP</LinkMM>
    <LinkScreen>ScreenEvent</LinkScreen>
    <LinkBusinessObject>BusinessObjectEvent</LinkBusinessObject>
    <LinkComponent>ComponentEventEditForm</LinkComponent>
    <Caption>Új esemény</Caption>
    <Action>NewObject</Action>
</PSearch>

Az actiontype attribútum, meghatározza a nyomógomb típusát, vagyis, hogy milyen jellegű művelet fog végrehajtani. Értékei a következők:

  • Link: Általános gomb definíció esetén ezt az akciótípust kell megadni. (Új felvitel és sor törlés)
  • Outer: Külső dll-be történő hívás esetén ezt kell megadni.
  • ProcessResultSet: ProcessResultSet funkciót tartalmazó gombot jelent.
  • SQL: Jelenleg nem használt lehetőség.
  • Report: Ez is egy küldő dll-ben megvalósított egyedi logikát hív meg, az Outer típussal szemben a PSearch-ök értékeit is átadja a .dll meghívásakor.

Link

Link beállítás esetén az alábbi nodeok segítségével állíthatjuk be a használni kívánt munkamódszert, képernyőt, komponenst és üzleti objektumot. Ezeknek a beállításoknak a megfelelő működés szempontjából van jelentősége. Új objektum felvitelénél a beállított képernyő fog megjelenni, de törlésnél a beállított üzleti objektum fogja elvégezni a műveletet.

  • A LinkMM node segítéségével megadhatjuk, hogy az új képernyő melyik munkamódszeren jelenjen meg.
  • Az új képernyő az adott munkamódszeren belül a LinkScreen node-ban adható meg a már ismert képernyő referenciával. (természetesen az adott Screen-nek nem kell szerepelni az adott MM xml fájlban)
  • LinkBusinessObject node-ban beállított üzleti objektum fogja reprezentálni a létrehozandó objektumunkat.
  • LinkComponent: Az új képernyő Component-je amely értelmezni fogja a beérkező filtereket.

    Megjegyzés: Az Effector jelenleg nem használja ezt a beállítást, a korábbi verziók miatt maradt a rendszerben.

  • Az Action node segítségével beállítható a gomb konkrét működése. A következő lehetőségek közül választhatunk:

    • NewObject: Új objektum felvételére lehet használni a gombot. Ilyenkor a LinkBusinessObject-ben beállított BusinessObject vagy annak altípusából hoz létre újat a keretrendszer. Típus / altípusról az Üzleti objektumok fejezetben olvashat.
    • DeleteObject: A kijelölt sor, sorok törlődnek a rendszerből.
    • SimpleLink: Egy szabadon beparaméterezett Screen-t jelenít meg, ahol tetszőleges további műveletek végezhetőek. A node RefreshScreenAfterAction attribútumában pedig beállítható, hogy a művelet végrehajtása után frissítse-e a képernyőt. Értéke true vagy false.

Outer

A külső függvényhívást megvalósító PSearch, egy paraméterezett modul adott osztályába fog belehívni. Beállítását a Module node segítségével tehetjük meg, ez a node fogja tartalmazni azokat a technikai adatokat, melyek segítségével eléri az implementáló osztályt.

<Module classname="orn_Sample.SpecProjectPDFExportButton">[##LocalProgramPath##]\Sample.dll</Module>

A Module node értéke a meghívandó modul neve és teljes elérési útvonala. A [##LocalProgramPath##] karakterláncot rendszer kicseréli a saját útvonalára. Például: C:\Inetpub\wwwroot\Sample\bin.

A classname attribútum, a modulban lévő osztályt határozza meg, amely osztálynak egy speciális interfészt kell megvalósítania (IEVIDataGrid). Ez az interfész megvalósítás garantálja a megfelelő működést.

Ennél a PSearch altípusnál az Action node értéke tetszőleges szöveg lehet, amely egy külső DLL-be történő híváskor, mint paraméter fog átmenni.

Report

Viselkedése hasonló az Outer típushoz, de itt az osztálynak az
IEVIReport interfészt kell megvalósítani.

ProcessResultSet (PRS)

A táblázatban megjelenített adatokra lehet tömeges műveleteket végrehajtani az ilyen típusú gombbal. A ProcessResultSet funkcióról az Extra funkciók fejezetben talál további információt.

Az Action node elérhető beállításai a következők:

  • ExcelExport: A táblázatban megjelenített adatokra meghívja a keretrendszer ExcelExport funkcióját (Excel táblázatot készít belőle)
  • ProcessResultSet: A táblázat adataira meghívja a keretrendszer ProcessResultSet funkcióját. Ebben az esetben az Action nodeon beállíthatóak bizonyos attribútumok is:
    • sp: A meghívandó tárolt eljárás neve.
    • CloseScreenAfterAction: A képernyő bezárását kezdeményezi a művelet befejezése után, értéke true vagy false lehet.
    • RefreshAfterAction: Értéke a screen, component, nothing lehetőségek egyike lehet. Itt állítható be, hogy képernyő melyik része frissüljön a PRS meghívása után. Ha ez a beállítás hiányzik, akkor a RefreshScreenAfterAction beállítása lesz érvényes.
    • RefreshScreenAfterAction: A művelet végrehajtása után frissítse-e a komponenst.

    Megjegyzés: Elavult, helyette a RefreshAfterAction használata javasolt.

    • OnlySelectedRows: Csak a kijelölt sorokat adja-e át a PRS funkciónak vagy a táblázat összes sorát. Értéke true vagy false lehet.

SQL

Egyelőre nem használt beállítás.

ActionButton példa definíciók:

<!-- új felvitel -->
<PSearch id="NewEvent" displaytype="ActionButton" actiontype="Link">
    <LinkMM>MMPEP</LinkMM>
    <LinkScreen>ScreenEvent</LinkScreen>
    <LinkBusinessObject>BusinessObjectEvent</LinkBusinessObject>
    <LinkComponent>ComponentEventEditForm</LinkComponent>
    <Caption>Új esemény</Caption>
    <Action>NewObject</Action>
</PSearch>

<!-- Excel export -->
<PSearch id="export" displaytype="ActionButton" actiontype="ProcessResultSet">
    <LinkMM></LinkMM>
    <LinkScreen></LinkScreen>
    <LinkBusinessObject></LinkBusinessObject>
    <LinkComponent></LinkComponent>
    <Caption>Excel export</Caption>
    <Action>ExcelExport</Action>
</PSearch>

<!-- ProcessResultSet -->
<PSearch id="nyugta" displaytype="ActionButton" actiontype="ProcessResultSet">
    <LinkMM></LinkMM>
    <LinkScreen></LinkScreen>
    <LinkBusinessObject></LinkBusinessObject>
    <LinkComponent></LinkComponent>
    <Caption>Nyugtázás</Caption>
    <Action sp="orn_prs_all_events_comments_read_messageboard" CloseScreenAfterAction="false">ProcessResultSet</Action>
</PSearch>

ExcelExport példa definíciók (Effector 5.4+):

<PSearch id="export" displaytype="ActionButton" actiontype="ProcessResultSet">
    <LinkMM />
    <LinkScreen />
    <LinkBusinessObject />
    <LinkComponent />
    <Caption>Excel export</Caption>
    <Action>ExcelExport</Action>
    <DataSources>
        <DataSource type="dgvc" filtertype=”out”>RTActions</DataSource>
        <DataSource type="dgvc" filtertype=”in”>RTBOMethods</DataSource>
    </DataSources>
    <ExcelTemplate>interim_template_u16ext</ExcelTemplate>
</PSearch>

A DataSources gyűjtő tag-en belül tudjuk felsorolni azokat a dgvc-ket (prefix és kiterjesztés nélkül), amiket exportálni szeretnénk. Ha nem adunk meg ilyet, akkor az aktuális képernyő tartalma kerül exportálásra. (A type attribútum jelenleg csak dgvc.)

Lehetőség van megadni a filtertype attribútumban, hogy a bejövő vagy a kimenő filterek legyenek átadva az exportáláskor, vagyis amelyik megjelenítőn megnyomtam a gombot, az ahhoz a megjelenítőhöz tartozó in- vagy out filtereket kapja meg az export eljárás. Opcionális attribútum, két lehetséges értéke: in, out. Alapértelmezett beállítás az out.

Az ExcelTemplate tag-ben adhatjuk meg azt az excel template-et, amibe exportálni szeretnénk; ez az ExcelTemplate adatábla TemplateName mezőjében kell szerepeljen.

CREATE TABLE [dbo].[ExcelTemplate](
    [TemplateID] [int] IDENTITY(1,1) NOT NULL,
    [TemplateName] [varchar](200) NULL,
    [TemplatePath] [varchar](500) NULL,
    [TemplateTitle] [varchar](200) NULL,
    [Description] [varchar](max) NULL,
    [Deleted] [tinyint] NULL
)

Mezők:

  • TemplateID: egyedi azonosító
  • TemplateName: a template azonosítója, ezt adjuk meg az ExcelTemplate tag-ben
  • TemplatePath: a template abszolút elérési újta
  • TemplateTitle: a template rövid leírása (jelenleg nem használt)
  • Description: a template részletes leírása

Ha a template-en érvényesítéseket (/ adatellenőrzéseket / tartományokat) szeretnénk definiálni, akkor a template-ben lennie kell egy “__LookupList__” sheet-nek (akár elrejtve is lehet), amelyben megadjuk az egyes csoportok nevét, ami alá majd a rendszer automatikusan betölti a megfelelő elemeket.

CREATE TABLE [dbo].[ExcelTemplateLookupValues](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [TemplateID] [int] NULL,
    [LookupGroup] [varchar](200) NULL,
    [Query] [varchar](max) NULL,
    [Deleted] [tinyint] NULL
) ON [PRIMARY]

Mezők:

  • TemplateID: az ExcelTemplate táblában megadott template fájl egyedi azonosítója
  • LookupGroup: a template-ben definiált csoport neve (ilyen néven fogja a rendszer keresni a template-ben az egyes csoportokat a “__LookupList__” sheet-en kis/nagybetű érzékenyen)
  • Query: az itt megadott lekérdezés eredménye lesz az adott csoporthoz tartozó elemek listája

Adatexport EditForm-on:

EditForm-on is definiálhatunk exportot Button típusú Control segítségével, ha az Action tag-be "ExcelExport” értéket írunk. Itt kötelezően meg kell adnunk legalább egy adatforrást (dgvc-t), amelyiket exportálni szeretnénk. Továbbá itt is van lehetőség template-et megadni, ugyanúgy, mint a dgvc-n definiált esetben.

Megjegyzés: EditForm esetén nincs lehetőség beállítani az exportálási tartományt, minden esetben a teljes eredményhalmaz lesz exportálva.

<Control>
<Type>Button</Type>
    <Name>Export</Name>
    <ControlCaption>Export</ControlCaption>
    <Width>80</Width>
    <Left>160</Left>
    <Action>ExcelExport</Action>
    <DataSources>
        <DataSource type="dgvc">RTActions</DataSource>
        <DataSource type="dgvc">RTBOMethods</DataSource>
    </DataSources>
    <ExcelTemplate>interim_template_u16ext</ExcelTemplate>
</Control>

Megjegyzések:

  • Ha a paraméterezésben más adatforrást adok meg, akkor az export gombra kattintás után felugró ablakban nem tudom kiválasztani az exportálni kívánt tartományt; ilyenkor mindig a teljes lekérdezés eredményét exportálja a rendszer.
  • Az egyes sheet-ek neve a dgcv Caption tag-jében megadott neve lesz, ha ez nincs megadva, akkor a Name tag értéke lesz az.
  • Ha a paraméterezésben template-et adok meg, akkor az export gombra kattintás után felugró ablakban nem tudom kiválasztani az exportálni kívánt formátumot; ilyenkor mindig xlsx formátumba exportál a rendszer. A felugró ablakban megjelenik annak a template-nek a neve, amelybe exportálni szeretnénk.
  • Ha csak a DataSources-t adjuk meg, akkor minden egyes DataSource tag-ben megadott dgvc az excel 1-1 sheet-jére kerül, a felsorolási sorrendben.
  • Ha csak az ExcelTemplate tag-et adjuk meg, akkor az aktuális dgvc tartalma kerül exportálásra a megadott template-be.
  • Ha mindkét tag ki van töltve, akkor a DataSources-ban megadott dgvc-k lesznek betöltve a template excel-be a felsorolási sorrendben.
  • Ha több DataSource-t adunk meg, mint ahány sheet van a template-ben, akkor azt jelzi a rendszer.
  • Ha nincs megadva ezek egyike sem, akkor a hagyományos módon tudunk adatot exportálni.

TextSearch

Egyszerű szöveges szűrő mező definiálását teszi lehetővé.

A következő node-ok nem kötelezőek és TextSearch specifikusak:

  • UseHTMLEncode node lehetővé teszi a HTMLEncoding ki illetve bekapcsolását az adott szűrőhöz. Értéke true/false lehet, alapértelmezetten true. Megjegyzés! Az Effector 5.0.001-es verziója és felette nem veszi figyelembe ezt a beállítást.
  • OnlyNumber node-val beállítható, hogy csak számokat fogadjon el a szűrő. Értéke true vagy false lehet. Alapértelmezetten false.

Példa:

<PSearch id="FeladatIDTextBox" displaytype="TextSearch" filtertype="complex">
    <Caption>Feladat #</Caption>
    <OnlyNumber>true</OnlyNumber>
    <ConnectedColumn>f.FeladatID</ConnectedColumn>
    <Operator>=</Operator>
</PSearch>

DateRange

A dátum intervallum szűrő gyakorlatilag egy specializált ComboSearch, működése is nagyon hasonló az utóbbihoz.

Itt is a ComboDescription node használatos a választható értékek adatforrásának meghatározásához, mint a ComboSearch-ök esetében. Ez a node tartalmazza a ComboDescription referenciát, mely a definíciós fájl neve.

Megkötések:

  • Az értékkészlet kulcsa dátumtól|dátumig formátumú kell, hogy legyen. Pl.: (2011-01-01|2011-02-01).
  • A ConnectedColumn node-nak DateRange esetén tartalmaznia kell a {0} és {1} karakter láncokat. Az elsőt a dátumtól, a másodikat a dátumig értékkel helyettesíti be a rendszer.
  • Operator: Az operátor node csak between lehet.

Példa:

<PSearch id="Interval" displaytype="DateRange" filtertype="simple">
    <ComboDescription>ComboDateRange</ComboDescription>
    <Caption>Időszak</Caption>
    <ConnectedColumn>
        <![CDATA[((case when e.done=0 and e.task=1 then dateadd(year,100,getdate()) else e.StartDate end) >= `{0}` and e.StartDate <= `{1} 23:59:59.999`)]]>
    </ConnectedColumn>
    <Operator>between</Operator>
    <DefaultValue type="SQL">
        <![CDATA[SELECT dbo.[Oriana_Short_Date](DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 0)) + `|` +  dbo.[Oriana_Short_Date](DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 6))]]>
    </DefaultValue>
    <Width>220</Width>
</PSearch>

TagCloud

Címkefelhő típusú szűrő mező. Egy legördülő listában jeleníti meg csoportosítva a címkéket.

Példa:

<PSearch id="tagCloud1" displaytype="TagCloud" filtertype="simple">
    <Caption>Cimke felhő</Caption>
    <DDO>DDTagCloudProba</DDO>
    <TagGroupColumn>tagGroup</TagGroupColumn>
    <TagCaptionColumn>tag</TagCaptionColumn>
    <TagValueColumn>count</TagValueColumn>
    <TagIDColumn>tagValue</TagIDColumn>
    <TagPSearchDefinitionColumn>psearchDef</TagPSearchDefinitionColumn>
    <Width>430</Width>
    <DisplayGroupInControl>false</DisplayGroupInControl>
</PSearch>

A címke felhő beállításához az alábbi nodeok állnak rendelkezésre:

  • DDO: Az adatforrás meghatározását végezhetjük el vele, annak a DDO-nak a nevét tartalmazza, amely a címkefelhő adatait szolgáltatja. Fontos, hogy ez a DDO fogadni tudja a DGVC-n definiált szűrőket.
  • TagGroupColumn: A DDO azon oszlopa, amely a csoport nevét tartalmazza.
  • TagCaptionColumn: A DDO azon oszlopa, amely a címkék feliratát tartalmazza.
  • TagValueColumn: A DDO azon oszlopa, amely a címke mellett megjelenített számláló értékét tartalmazza.
  • TagIDColumn: A DDO azon oszlopa, amely a címkéhez tartozó (csoporton belüli) egyedi azonosítót tartalmazza.
  • TagPSearchDefinitionColumn: A DDO azon oszlopa, amely a szűréshez definiál egy PSearch elemet.
  • DisplayGroupInControl: Értéke true vagy false lehet, az alapértelmezett érték true. Ha értéke false, akkor a kontrolon nem jelenik meg, hogy mely csoportokból lettek választva az aktív címkék.

QuerySearch

Egy érték listából választva szűrhetjük a ConnectedColumn-ban definiált mező értékeit. Szűrési mechanizmusa megegyezik a ComboSearch-el, azonban itt az érték lista egy több oszlopos listát jelenít meg.

A QueryDescription node tartalmazza a beállításokat, mely segítségével meghatározható az érték lista adatforrása, és a felhasznált megjelenítő. A beállításhoz felhasználható attribútumok:

  • LinkScreen: Annak a képernyőnek a nevét tartalmazza, amely megnyílik az értékválasztó gomb megnyomásakor.
  • QueryDescription: Az adatforrásként kapcsolt DDO neve, amely a kapcsolt mezőnek megfelelő adatokat tartalmazza.
  • ValueMember: Annak az oszlopnak a neve, amely az értéket tartalmazza.
  • DisplayMember: Annak az oszlopnak a neve, amely az értékhez tartozó szöveg leírást tartalmazza.

Példa:

<PSearch id="MarcomListQuerySearch" displaytype="QuerySearch" filtertype="complex">
    <QueryDescription LinkScreen="ScreenChoiseRendezvenyLista" QueryDescription="DDChoiseRendezvenyLista" ValueMember="U_PRS_ID" DisplayMember="DisplayValue" />
    <Caption>Listák</Caption>
    <ConnectedColumn>pe.peopleid</ConnectedColumn>
    <Operator>in</Operator>
    <Query>
        (SELECT p.peopleid
        FROM orn_PeopleList m with (nolock)
        LEFT OUTER JOIN people p with (nolock) ON m.PeopleID = p.peopleid and p.deleted = 0
        WHERE m.Deleted=0 AND m.ProcessResultSetID = #param#)
    </Query>
</PSearch>

BoolSearch

Egyszerű checkbox típusú szűrő definícióját tartalmazza, egyetlen hozzáadott node-ot tartalmaz, mely meghatározza azt, hogy a szűrő két, vagy három állású checkbox-e. Ez a beállítás a következő node-al érhető el: `false

<PSearch id="IsArchivedCheckBox" displaytype="BoolSearch" filtertype="simple">
    <Caption>Archivált?</Caption>
    <ConnectedColumn>f.IsArchive</ConnectedColumn>
    <Operator>=</Operator>
    <TriState>false</TriState>
    <DefaultValue type="Constant" return="boolean" default="false">False</DefaultValue>
</PSearch>`

Linkelt objektumok beállítása

A linkelt objektumok segítségével a táblázatos megjelenítőkben linkeket hozhatunk létre, melyek segítségével a beállított képernyőkre tudunk navigálni. Jelentősége abban rejlik, hogy míg a táblázat csak néhány adatot tartalmaz az adott objektumról - esetenként az azonosítóját, és a leírását - addig a megjelenített képernyőn bármilyen kapcsolódó információ megjeleníthető az objektummal kapcsolatban. Működéséhez a filtereket használja mely a táblázaton történő kattintáskor a kiválasztott objektum azonosítóját (helyes paraméterezés esetén) helyezi a kimenő filterek közé, a megjelenítendő képernyő pedig ezt az értéket használva felépíti önmagát, betölti az adatokat.

A Linkelt objektumok definiálásához a /DataGridViewClass/ChainListNodes kollekció ChainListNode elemeit kell felhasználnunk, és felsorolnunk a link definíciókat.

Példa:

<ChainListNodes>
    <ChainListNode>
        <ClickedColumn>ProjectName</ClickedColumn>
        <KeyColumn type="Project_ID">ProjectID</KeyColumn>
        <LinkMM>MMFolyamatok</LinkMM>
        <LinkScreen>ScreenProject</LinkScreen>
        <LinkComponent>ComponentProjectsEdit</LinkComponent>
    </ChainListNode>
</ChainListNodes>

A ChainListNode nodenak egyetlen nem kötelező attribútuma a type. Alapértelmezett működése (type attribútum megadása nélkül) a fent leírtaknak megfelelő. Megnyitja a hivatkozott objektumot. Beállított esetben a következő értékek valamelyikét veheti fel, mely módosítja az alapértelmezett működést:

  • New: A felugró képernyő új adat felviteli módban fog megjelenni (nem szerkesztésként).
  • NewOrExists: A keretrendszer ellenőrzi, hogy létezik–e a hivatkozott objektum. Ha igen akkor megjeleníti az adatait, ha nem, akkor újat készít.
  • ProcessResultSet esetén a linkre kattintva egy PRS hívás történik. A PRS hívást a ChainListNode-hoz kapcsolt PSearch fogja elvégezni, ezt az összekapcsolást az adott ChainListNode node ProcessResultSetPSearch nodejának beállításával tehetjük meg, az értéknek egy PRS-t megvalósító PSearch azonosítóját kell, hogy tartalmazza.
  • OpenUrl segítségével egy URL nyitható meg.

Példák:

<ChainListNodes>

    <ChainListNode type="NewOrExists">
        <ClickedColumn>ProjectName</ClickedColumn>
        <KeyColumn type="Project_ID">ProjectID</KeyColumn>
        <LinkMM>MMFolyamatok</LinkMM>
        <LinkScreen>ScreenProject</LinkScreen>
        <LinkComponent>ComponentProjectsEdit</LinkComponent>
    </ChainListNode>

    <ChainListNode type="ProcessResultSet">
        <ClickedColumn>ProjectName</ClickedColumn>
        <KeyColumn type="Project_ID">ProjectID</KeyColumn>
        <LinkMM />
        <LinkScreen />
        <LinkComponent />
        <ProcessResultSetPSearch>ActionButton_DocGen</ProcessResultSetPSearch>
    </ChainListNode>
</ChainListNodes>

Egy link meghatározásához felhasználható nodeok a következők lehetnek:

  • ClickedColumn: Az oszlop azonosítóját (az XML /DataGridViewClass/Columns/Column name attribútuma) tartalmazza, ahol megjelenik a link.
  • LinkMM: Segítéségével megadhatjuk, hogy az új képernyő melyik munkamódszeren jelenjen meg.
  • LinkScreen: Az új képernyő az adott munkamódszeren belül ebben a nodeban adható meg a már ismert képernyő referenciával. (A LinkMM node-ban megadott munkamódszerben nem kell szerepelnie)
  • LinkComponent: Az új képernyő Component-je amely értelmezni fogja a beérkező filtereket.

    Megjegyzés: Az Effector jelenleg nem használja ezt a beállítást, a korábbi verziók miatt maradt a rendszerben.

  • FilterInUrl: Csak OpenUrl típus esetén van értelmezve.
  • ProcessResultSetPSearch: Csak ProcessResultSet típus esetén van értelmezve.

Példák:

<ChainListNodes>
    <ChainListNode>
        <ClickedColumn>CompanyName</ClickedColumn>
        <KeyColumn type="Company_ID">CompanyID</KeyColumn>
        <LinkMM>MMFolyamatok</LinkMM>
        <LinkScreen>ScreenCompanyEdit</LinkScreen>
        <LinkComponent>ComponentCompanyEdit</LinkComponent>
    </ChainListNode>
    <ChainListNode>
        <ClickedColumn>ProjectName</ClickedColumn>
        <KeyColumn type="Project_ID">ProjectID</KeyColumn>
        <LinkMM>MMFolyamatok</LinkMM>
        <LinkScreen>ScreenProject</LinkScreen>
        <LinkComponent>ComponentProjectsEdit</LinkComponent>
    </ChainListNode>
    <ChainListNode type="New">
        <ClickedColumn>Notes</ClickedColumn>
        <KeyColumn type="Project">ProjectID</KeyColumn>
        <LinkMM>MMPEP</LinkMM>
        <LinkScreen>ScreenCommentsProject</LinkScreen>
        <LinkComponent>ComponentCommentsProject</LinkComponent>
    </ChainListNode>
</ChainListNodes>

Altípusok és típus függő funkciók beállítása

Mint azt a fejezet elején említettük a táblázatos megjelenítők több altípusra tagolódnak, ezek beállítása néhány speciális node és attribútum segítségével lehetséges. Főként formázást érintenek a beállítások, az adatok forrása ugyanaz marad.

Grid

Az adatokat táblázatos formában jeleníti meg.

Lehetséges opciók

  • RowNumberIsVisible: Ha a /DataGridViewClass/RowNumberIsVisible nem létezik vagy értéke true, akkor a táblázatban megjelenik egy oszlop, amelyben a sor száma látható. Értéke lehet true vagy false. Alapértelmezett értéke false. Megjegyzés! Az Effector 5.0.001-es verziójától érhető el ez a lehetőség.
  • CardPreviewToolIsVisible: Ha táblázatot a felületen át lehet állítani kártya nézetre, akkor egy kis ikon jeleníthető meg minden sorhoz, amelyre ha az egérmutatóval ráállunk, akkor megjeleníti a kártyát, ami az adott rekordhoz tartozik. Ennek az ikonnak a megjelenítését a /DataGridViewClass/CardPreviewToolIsVisible node-al lehet szabályozni. Értéke lehet true vagy false, Alapértelmezett érték false. Megjegyzés! Az Effector 5.0.001-es verziójától érhető el ez a lehetőség.
  • DeleteToolIsVisible: Ha a táblázathoz törlés funkciót megvalósító ActionButton PSearch van paraméterezve, akkor minden sorban megjelenik az adott sor törlésére szolgáló kis ikon. Ezt lehet letiltani ennek a node-nak a használatával. Értéke lehet true vagy false, true esetén nem fog megjelenni a törlés ikon. Alapértelmezett érték false. Megjegyzés! Az Effector 5.0.001-es verziójától érhető el ez a lehetőség.
  • EditToolIsVisible: Ha a táblázathoz legalább egy link (ChainListNode) paraméterezve van, akkor meg lehet jeleníteni egy ceruza ikont, amivel az adott sor felhozható szerkesztésre egy képernyőn. Több ChainListNode esetén a rendszer kiválasztja az első képernyő megnyitásra paraméterezett beállítást. Ez az automatizmus kikapcsolható a ChainListNode attribútum selected értékével. Az attribútum értéke lehet selected illetve auto. A ChainListNode attribútum selected értéke esetén a ChainListNodeClickedColumn attribútumban kell megadni annak az oszlopnak a nevét, amely oszlop kattintását szeretnénk szimulálni (ClickedColumn értéke a ChaniListNode-ban). Megjegyzés! Az Effector 5.0.001-es verziójától érhető el ez a lehetőség. Példák:

    <EditToolIsVisible>true</EditToolIsVisible> <EditToolIsVisible ChainListNode="selected" ChainListNodeClickedColumn="PeopleName">true</EditToolIsVisible>

Összegző sor:

Specialitása, hogy csak ebben a megjelenítőben van lehetőség egy összegző sor megjelenítésre a panel alján, valamint itt van lehetőség az adatok szerkesztésére is.

Ezt a /DataGridViewClass/Summaries kollekció Summary elemeinek megadásával tehetjük meg. Az egyes elemek tartalmazzák az érintett mezőket (a Column attribútumban kell megadni a mező referenciát), melyek a felsorolás sorrendjében vesznek részt az összegzésben. A SummaryType attribútuma a következő egyszerű műveletek valamelyike lehet: Sum, Average, Count, Maximum, Minimum, Custom.

Példa:

<Summaries>
    <Summary SummaryType="Sum" Column="EUR_MSRP_grid"></Summary>
    <Summary SummaryType="Sum" Column="EUR_MSRP_grid_sulyozott"></Summary>
</Summaries>

Megjegyzés!: Az Effector 5.0.001-es verziójától mivel a sorokat csoportosítani lehet, ezért részösszegek is meg vannak jelenítve az egyes csoportok alján.

Inplace editing - Szerkesztés

A táblázatos nézetben lehetőség van cellák értékének szerkesztésére. A Type node tartalmazza azt, hogy milyen beviteli mezővel lehet szerkeszteni az adott oszlop tartalmát. Jelenleg a TextBox, Date, DateTime és ComboBox típusok vannak támogatva. Ilyenkor a Column node-on belül egy ReadOnly RuleValueType-nak is szerepelni kell, aminek a kiértékelés utáni false értéke esetén lesz szerkeszthető az oszlop mezőinek a tartalma.

A szerkesztés folyamata a következő: A rendszer a DGVC oszlop neve alapján kikeresi a definíciót a DDO-ban. A mentéshez pedig az IdColumn nodeban megadott oszlopot veszi alapul.

Lent egy komplex példát láthatunk a számlázandó oszlop szerkesztéséről:

  • DGVC:

       <Column name="Szamlazando" displayFormat="# ###">
           <Type>TextBox</Type>
           <ColumnCaption>Számlázandó</ColumnCaption>
           <Readonly type="Constant" return="boolean" default="false">false</Readonly>
       </Column>
    
  • DDO:

       <Column name="EventID">
           <BusinessObject>BusinessObjectEvent</BusinessObject>
           <SqlName>e.EventID</SqlName>
           <IdColumn>EventID</IdColumn>
           <OutFilter type="Out">
               <Alias>Event</Alias>
           </OutFilter>
       </Column>
       <Column name="Szamlazando">
           <BusinessObject>BusinessObjectEvent</BusinessObject>
           <SqlName>
               e.Szamlazando
           </SqlName>
           <IdColumn>EventID</IdColumn>
       </Column>
    

A felhasználó számára a számlázandó oszlopra kattintva megjelenik egy szövegbeviteli mező, ami csak egész számot fogad el. A mentés pedig a BusinesObjectEvent-el történik, az üzleti objektum azonosítója az adatbázisban az EventID oszlopban található a konfiguráció alapján (Ezt a Szamlazando oszlop IdColumn node-ja tartalmazza). Ez alapján az EventID-hoz tartozó Szamlazando mezőt fogja frissíteni a rendszer. A helyes működés érdekében a BusinessObject-et minden oszlopban be kell állítani, amit szerkeszthetővé szeretnénk tenni. Az alias-olt, és számított oszlopok nem menthetőek.

Megjegyzés!: Ha a Readonlyszabály értéke True akkor nem szerkeszthető a mező és a szerkesztést végző kontrol nem jelenik meg.

A különböző kontrollok paraméterezése

  • TextBox paraméterezése:
    • Többsoros beviteli mező megjelenítése a MultiLine node segítségével lehetséges, itt megadható a height attribútum segítségével a megjelenítő magassága.
    • A FieldProperties node a beviteli mező által elfogadható értékeket szabályozza. A type attribútumban a típust adhatjuk meg. Jelenlegi értékkészlete a következő: System.String, System.Int16, System.Int32, System.Int64, System.Byte, System.Double lehet az értéke. A maximális hosszúságot (maxLength) és a null érték elfogadását (allowDBNull) szabályozó attribútumok csak System.String esetén vannak értelmezve.
    • A Mask segítségével maszkolhatjuk az adatot. Például: 99999999-9-99.

Példa:

<Column name="kocsi1" disallowGroup="true" displayFormat="# ###">
    <Type>TextBox</Type>
    <MultiLine>false</MultiLine>
    <ColumnCaption>1. kocsi</ColumnCaption>
    <Readonly type="Constant" return="boolean" default="false">false</Readonly>
    <FieldProperties type="System.String" maxLength="1000" allowDBNull="false" />
    <Width>170</Width>
</Column>
  • ComboBox paraméterezése:

Példa:

<Column name="helyettesitendo_jarmuid">

    <Visible type="Constant" return="boolean" default="false">false</Visible>
</Column>
<Column name="helyettesitendo">
    <ColumnCaption>Tervezett típus</ColumnCaption>
    <Type source="SQL" ComboDescription="ComboJarmuTipusok" keyColumn="helyettesitendo_jarmuid">ComboBox</Type>
    <Readonly type="Constant" return="boolean" default="false">false</Readonly>    
    <Width>200</Width>
</Column>

A korábban definiáltaktól kissé eltérő módon működik. Itt a felhasználó arra az oszlopra kattint, ami az értéket szövegesen mutatja, de a keyColumn attribútumban megadott oszlopba fogja menteni a kiválasztott elem azonosítóját, a BusinessObject és az id értéke itt is kiszámolódik, de ebben az esetben a keyColumn-ban megadott oszlop lesz az érték helye.

CardList, CardGrid

A kártya típusú táblázatos megjelenítők között nagyon kicsi a különbség a paraméterezés szempontjából, ezért együtt tárgyaljuk őket.

A CardList megjelenítő nem csinál mást, mint lekérdezés eredményeként visszakapott sorokhoz egyenként előálít egy kátyát, amit aztán egymás után megjelenít a felületen. Tehát 1 sor = 1 kártya.

A Grid-hez képest a CardList esetén lehetőség van

  • csoportosítani a kártyákat
  • át lehet kapcsolni a grafikon szerint megjelenítésre (Ilyenkor a kártyák lefelé egymás után jelennek meg, egy megadott oszlopban található érték alapján dinamikusan megváltoztatva a kártya méretét. Minél nagyobb az érték, annál jobban kitűnik a kártya a többi közül.)

Az oszlop definíciók tartalmaznak néhány CardList esetén értelmezett beállítási lehetőséget:

  • A /DataGridViewClass/Columns/Column node disallowGroup attribútuma segítségével a CardList csoportosítás funkcióban való részvételét szabályozhatjuk. Alapértelmezett értéke nem látható oszlop esetén true látható oszlop esetén false, megléte nem kötelező. A csoportosításban a következő oszlopok szerepelnek:

    • Látható az oszlop és a disallowGroup attribútum nem létezik vagy értéke false.
    • Látható az oszlop és a disallowGroup attribútum értéke false.
    • Nem látható az oszlop, de a disallowGroup attribútum értéke false.

A disallowSort logikai attribútum segítségével szabályozhatjuk, hogy a Rendezés funkcióban az adott oszlop szerepeljen-e (Effector 5.1+)

Mitől lesz kártya nézet a kártya nézet?

Ha a CardViewHTML node szerepel a DGVC definíciójában, akkor a rendszer átváltja a megjelenítési módot kártya nézetre. A kártyák leírását két féle képpen is meg lehet adni:

Közvetlenül a CardViewHTML node belsejében:

Ekkor a node belső részében a kártya tartalmát leíró HTML utasításokat kell megadni, valamint használni lehet a [##<oszlop>##] stílusú behelyettesítő karakterláncot, ahol az <oszlop> az adott mező DGVC-beli azonosítóját tartalmazza, és az értéke fog behelyettesítődni a HTML-be.

Példa:

<CardGroupOrientationChangeIsEnabled>false</CardGroupOrientationChangeIsEnabled>

<CardViewHTML sort="false" group="false">
<![CDATA[
    <div class="listview_item_content_01" style="background:url(gfx/event_card_repx[##Hatter##].png);overflow:hidden;height:100%">
        <div class="card_bubble_[##type##]" style="position:absolute;height:100%;width:225px;background: url(gfx/card_comment_background.png) repeat scroll 0pt 0pt transparent;border-radius:5px;"></div>
        <div class="listview_item_img_[##type##]"><img src="gfx/todo_[##Done##].png"></div>
        <div class="chainListNode_[##type##]">[##Description_[##type##]##]</div>
        <div class="card_people_[##type##]"><img class="img_people_[##type##]" src="gfx/[##Ember##]"></div>
        <div class="card_felelos_[##type##]">[##FelelosName##]</div>
        <div class="card_bubble_[##type##]" style="position:absolute;left:203px;"><img src="gfx/comment_bubble2.png"></div>
        <div class="card_[##type##]" style="position:absolute;right:2px;bottom:17px;">[##Uzenet##]</div>
        <div class="card_[##type##]_legmester" style="display:block;position:absolute;bottom:2px;">[##StartDateCard##]</div>
        <div class="card_[##type##]" style="position:absolute;left:70px;bottom:15px;overflow:hidden;">[##Szerepkor##]</div>
    </div>]]>
</CardViewHTML>

CardView TemplateURL segítségével:

Ekkor a node tartalma a külső HTML template elérési útvonala kell, hogy legyen. Fontos, hogy egy .html kiterjesztésű fájlt kell megadni, mert a rendszer ennek hatására kapcsol át TemplateURL megjelenítési módba.

A template-ben chainlistnode-ként használhatunk bármely HTML tag-et, ha ellátjuk egy chainlistnode attribútummal és abban megadjuk annak az oszlopnak a nevét, amely az XML állományban definiált chainlistnode ClickedColumn node-jában szerepel.

A DDO oszlopaira itt a {{card.data.<oszop>}} szignatúrával hivatkozhatunk.

Megjegyzés: A templateben egyszerűbb AngularJS direktívák is használhatóak. (ng-if, ng-show, ng-hide)

Példa:

dgvcSample.xml

<CardViewHTML>delivery/js/cards/project_card.html</CardViewHTML>

project_card.html

<div class="event" style="height:100%; background-color: #fff;border: 2px solid #ccd; padding: 4px 6px;">
    <a chainlistnode='Description'>{{card.data.Description}}</a>
</div>

A kártya nézetben felhasználható attribútumok:

  • sort: A rendszer által szolgáltatott "rendezés" combobox megjelenítését szabályozza. Értéke True/False lehet. Alapértelmezett értéke True. Opcionális.
  • group: A rendszer által szolgáltatott "csoportosítás" combobox megjelenítését szabályozza. Értéke True/False lehet. Alapértelmezett értéke True.
  • A csoportosítás, rendezés, grafikon comboboxok elhelyezkedését az InsertBeforeControl node beállításával szabályozhatjuk, értéke annak a PSearch-nek a neve, amely elé be kell beszúrni az említett kontrollokat.A beállítás hiányában, az utolsó helyekre kerülnek. Megjegyzés! Az Effector 5.0.001-es verziójától ez a beállítás figyelmen kívül van hagyva.
  • CardViewGroupColors: A csoportok eltérő stílusúak lehetnek ezeket az alternáló stílusokat állíthatjuk be itt. Értéke vesszővel elválasztott CSS osztálynevek. Jelenleg: alter1, alter2, alter3, alter4, alter5, alter6, alter7, alter8, alter9, alter10 értékeket vehet fel. Ezek közül tetszőleges számú lehet. Ha több csoport van, mint az itt beállított CSS osztályok nevei, akkor az elsőtől folytatja. Nem kötelező attribútum.
  • DefaultGroupByColumn: Opcionális, értéke egy DDO-ban definiált oszlop neve, amely alapján alapértelmezetten csoportosítani szeretnénk a kártyákat.
  • DefaultGroupByDirection: Az alapértelmezett rendezést állíthatjuk be a csoportosításhoz, a csoportok nevei ebben a sorrendben fognak megjelenni. Opcionális, értéke Asc vagy Desc, és a DefaultGroupByColumn beállítással együtt kell/lehet használni.
  • CardViewGroupLayout: Opcionális, értéke Horizontal, vagy Vertical lehet, hatására a csoportok vízszintesen vagy függőlegesen jelennenek meg. Megjegyzés! Az Effector 5.0.001-es verziójától a layout átkapcsolható a felületen. Ha le szeretnénk tiltani ezt a lehetőséget, akkor az egy /DataGridViewClass/CardGroupOrientationChangeIsEnabled node segítségével lehetséges. Értéke true vagy false. Az alapértelmezett érték false
  • Graph: Azoknak az oszlopoknak a neveit tartalmazza vesszővel elválasztva, amelyekre alkalmazható a iGraph megjelenítés. Opcionális. Segítségével meg lehet adni a GroupByColumn és a SortByColumn lenyíló listákhoz hasonlóan, hogy mi szerint rajzolja ki a kártyákat a rendszer (GraphBy attribútum a CardViewHTML-ben) egymás alá, olyan hosszúsággal, amekkora a kiválasztott érték. Tehát ha a grafikon combo-ból pl. kiválasztom, hogy "ráfordítás" szerint rajzolja ki a "project" kártyákat, akkor a ráfordítás mező értékét hozzáadja a kártya alap szélességéhez, és olyan széles lesz az adott kártya + kiírja a ráfordítás értékét a kártya mellé jobbra. Magyarul egy elforgatott oszlopdiagram lesz a végeredmény.
  • CardCssFloat attribútum segítségével felülbírálható a kártyák CSS-ben definiált "float" beállítása. Megjegyzés! Az Effector 5.0.001-es verziójától és a felett ez a beállítás nincs értelmezve.
  • DefaultDisplayType attribútum segítségével beállítható, hogy milyen alapértelmezett nézetet használjon megjelenítéshez. Értéke card és grid lehet. grid esetében a kártya nézet helyett táblázatként fognak megjelenni az adatok.
  • prsPsearchId vagy ProcessResultSetPSearch: Annak a PSearch-nek az azonosítója, amely a ProcessResultSet hívást elvégzi a kártyára kattintás után. Ez a PSearch nem szükségszerűen látható. Megjegyzés! Az Effector 5.0.001-es verziójától nincs ez a funkcionalitás megvalósítva.
  • DisableAppearanceToggler: Letiltja a megjelenítés váltó gombot (kártya / táblázat közötti váltás lehetősége).
  • CardColumnCountColumn, CardWidthColumn, CardHeightColumn nodeok segítségével a kártyákat egymás mellé tehetjük mátrixszerű elrendezésben. A CardColumnCountColumn annak az oszlopnak a nevét tartalmazza, amelyben le van írva, hogy mennyi "oszlopa" legyen a mátrixnak. A CardWidthColumn és a CardHeightColumn azoknak az oszlopoknak a nevét tartalmazza, amely megadja, hogy az adott kártya mekkora, így lehetőség van különböző méretű kártyákat kirakni. A méretet pixelben kell megadni.
  • CardViewShowGroupElementCount attribútummal beállítható a csoport számláló megjelenítése. Ez egy egyszerű True/False kapcsoló. Megjegyzés! Az Effector 5.0.001-es verziójától és a felett ez a beállítás nincs értelmezve.
  • CardWidth és CardHeight attribútumokról részletesen lentebb olvashat.
  • CardViewGroupLabelCss: Ezzel a beállíátssal a csoportosítás cimkéjének egyedi megjelenítést lehet beállítani. Ez egy CSS osztály nevet takar. Megjegyzés! Az Effector 5.0.001-es verziójától és a felett ez a beállítás nincs értelmezve.
  • IsAnimationEnabled: A felületen a kártyák animálva jelennek meg. Egyes esetekben érdemes kikapcsolni ezt a lehetőséget. Értéke lehet true vagy false. Alapértelmezett értéke true. Megjegyzés! Az Effector 5.0.001-es verziójától és a felett ez a beállítás nincs értelmezve.

Váltás CardGrid nézetre

  • A CardWidth attribútummal a kártya szélességének beállítását tehetjük meg, amennyiben szükséges. Szélességet százalékban állíthatunk az érték és a mértékegység megadásával: 100%.
  • A CardHeight attribútummal a kártya magasságának beállítását tehetjük meg, amennyiben szükséges. Értéke általában egy pixelben megadott magasság, a mennyiség a mértékegység megadásával együtt szerepel: 45px.

CardGrid megjelenítőre akkor van lehetőség, ha a CardWidth és a CardHeight egyszerre vannak beállítva, ekkor a rendszer automatikusan átvált CardGrid módra.

Különböző magasságú kártyák használata esetén a CardHeight attribútum értékét FromCardViewHTML-ra kell állítani, majd az első div stílusában kell megadni a height:<magasság>px értéket, ahol a lehet egy szám vagy egy mező adat az [##<oszlop>##] stílusú behelyettesítő karakterlánccal megadva.

Példa:

<CardViewHTML InsertBeforeControl="Interval" CardHeight="FromCardViewHTML" CardWidth="310px">
    <![CDATA[
        <div style="height:[##height##]px; display:[##Display##]">  
            ...
        </div>
    ]]>
</CardViewHTML>

Megjegyzés! Az Effector 5.0.001-es verziója és a feletti verziók nem támogatják a CardGrid megjelenítőt.

TreeView

A fa megjelenítő paraméterezése is hasonló az előzőekben tárgyalt kártya nézethez, itt a TreeViewHTML node tartalmazza a szükséges HTML elemeket.

A rendszer hasonlóan a kártya nézethez, itt is automatikusan átvált folyamatábra a megjelenítésre amennyiben a TreeViewHTML szerepel a definícióban.

Felhasználható attribútumok:

  • IDColumn: Annak az DDOban definiált oszlopnak az azonosítója, amely egy csomópontot egyértelműen azonosít.
  • ParentIDColumn: Az adott csomópont szülőjének az azonosítóját tartalmazó DDO oszlop azonosító.
  • ArrowText: Az összekötő nyílra írandó szöveget tartalmazó oszlop neve. Jelenleg még nem használt.

Példa:

<TreeViewHTML IDColumn="EventID" ParentIDColumn="ParentEventID" ArrowText="Description"><![CDATA[
    <div class="treeview_item_content_01" style="background:url(gfx/fabra_feladat.png); background-repeat:no-repeat; overflow: hidden; height: 100%;">
        <div class="listview_item_img" style="margin-top:6px;margin-left:6px;"><img src="gfx/todo_[##Done##].png"></div>
        <div style="float:left;top:32px;left:7px;position:absolute;"><img src="gfx/comment_icon.png"></div>
        <div style="left:8px;top:35px;position:absolute;width:20px;text-align:center;"><font style="font-weight:bold;width:10px;text-align:center;">[##Megjegyzesek##]</font></div>
        <div style="margin-top:5px;float:left;width:143px;word-wrap:break-word;">
            <div class="chainListNode" style="height:30px;overflow:hidden;font-size:11px;margin-top:4px;">[##Description##]</div>
            <div style="bottom:5px;left:33px;position:absolute;font-size:12px;width:110px;height:15px;overflow:hidden;">[##Felelos##]</div>
            <div style="height:25;width:25;position:absolute;right:5px;bottom:5px;">
                <img src="gfx/[##Ember##]" width="25" height="25">
            </div>
            <div><pre></pre></div>
        </div>
    </div>]]>
</TreeViewHTML>

Calendar

A naptár megjelenítő paraméterezése is hasonló az előzőekben tárgyalt nézetekhez, itt a Calendar node tartalmazza a szükséges HTML elemeket.

A rendszer hasonlóan a többi nézethet, itt is automatikusan átvált megfelelő a megjelenítésre amennyiben a Calendar szerepel a definícióban.

!Fontos: Csak Esemény (Event) típusú objektumok mentésére használható a naptár.

Felhasználható attribútumok:

  • StartDateColumn: DDO oszlop azonosító, amely a naptárban megjeleníteni kívánt elem kezdő dátumát tartalmazza.
  • EndDateColumn DDO oszlop azonosító, amely a naptárban megjeleníteni kívánt elem befejező dátumát tartalmazza.
  • DisplayType: nem használt, mindig Daily.

Példa:

<Calendar StartDateColumn="StartDate" EndDateColumn="EndDate" DisplayType="Daily">
    <![CDATA[
        <div class="calendar_item_content_01" style="overflow: hidden; height: 100%;">
            <div class="listview_item_img" style="margin:2px;"><img src="gfx/todo_[##Done##]_small.png"></div>
            <div class="chainListNode" style="overflow:hidden;font-size:10px;position:absolute;bottom:5px;left:20px;">[##Description##]</div>
            <div style="top:5px;left:20px;position:absolute;overflow:hidden;">[##ProjectName##]</div>
        </div>
    ]]>
</Calendar>

SectionList

A megjelenítő a SectionListHTML node hatására aktivizálódik. A node belsejében azt a HTML template-t kell megadni, ami az egyes szakaszok megjelenítését írja le. A hivatkozások ugyanúgy kicserélődnek, mint a többi megjelenítőben,.

Felhasználható attribútumok:

  • CardWidth: A kártya szélességének állítása, célszerű, hogy auto maradjon az értéke.
  • CardHeight: A kártya magasságának állítása, célszerű, hogy auto maradjon az értéke.

Példa:

<SectionListHTML CardWidth="auto" CardHeight="auto">
    <![CDATA[
        <div class="listview_item_content_01">
        <div style="margin:[##Margin##];text-align:[##Align##];font-size:12px;">
            <div>[##Hivatkozas_Tipus##] [##[##type##]_Name##] [##EditTitle##] [##EditMegallapitas##] [##EditMegallapitasForNew##] [##Edit_ProjectName##]</div>
        </div>
    ]]>
</SectionListHTML>

  • Legutóbb frissítve: 1 év 6 hete
  • Effector