Uživatelské nástroje

Nástroje pro tento web


xml:formregister.xml

Formregister.xml

Přiřazuje Middle k Formě a specifikuje možné filtry pro Formu. Lze zde také definovat tzv. ShortCut pro variantní Lookupy v datamodelu.

Filtry LuaForm

  • Ve formregister: QuickPopis:Popis=@filter_FilterPopis|Param1=z,Param2=y
  • Parametry prijdou vzdy jako hash stringu.
  • V pripade pouziti parametru se meni chovani. Jiz nemuze chodit Params="xxx".
  • Pri prepnuti je to stejne {Init="1", Text="", Param1="z", Param2="y"}
  • Pri … {Button="1", Text="abc", Param1="z", Param2="y"}
  • Pri Enteru nebo clicku na zalozku {Enter="1", Text="def", Param1="z", Param2="y"}
  • Pro funkcni Locate pomoci parametru: AcceptLocate=1 (potom mu prijdou parametry LocateFields a LocateValues)

Speciální filtr v tabulce

Do sekce <Filters> se doplní následující řádek s textem popisu filtru a LUA kódem vracejícím string pro where klasuli SQL dotazu. Oddělovač polí je znak =. Je nutno pouzivat prefixy tabulek.

Příklad:

<!DOCTYPE FormRegister SYSTEM "../system/formregister.dtd">
<FormRegister>
  <Form Name="rozpocty_rozpocty">
    <Filters>
IDRozp
IDDruh
IDZakazka
IDPartner
IDCen
IDUzivatele
Počítače nad 100tis.=@return [[rozpocty_rozpocty.iddruh="poc" and rozpocty_rozpocty.CenaCelkem>100000]]
    </Filters>
  </Form>
</FormRegister>

Nebo po novu pomocí xml můžeme nadefinovat i caption a default hodnoty po vložení řádku. Aby nevypadl z rozsahu.

Počítače nad 100tis.=@return filter.create([[rozpocty_rozpocty.iddruh="poc" and rozpocty_rozpocty.CenaCelkem>100000]], "Počítače > 100000", {IDDruh="poc"})

Nebo je navíc možno definovat vlastni záložky a používat je jako vstup do naší funkce. Demo: v akcích vytvoříme fiktivní filtr, který filtruje najednou IDDruh a IDStav s nastavením záložek na 'xxx' a 'yyy'. Při přepnutí na tento filtr je parametr Folder=nil a žádná záložka není vybrána, v tomto případě nevyhoví žádný řádek. Až uživatel cvakne na záložku, tak do Folder dostaneme string 'xxx' nebo 'yyy' a vytvoříme filtr.

Dvojitý filtr=@return v_partneri_akce.DvojityFilter(DSI, Form, Folder)

A v souboru v_partneri_akce.lua si nadefinujeme funkci:

function v_partneri_akce.DvojityFilter(DSI, Form, Folder)
  local s = cf.tostring(Folder) 
  local ws = '0=1' 
  if Folder then 
    ws=string.format("partneri_akce.IDDruh='%s' and partneri_akce.IDStav='%s'", s, s) 
  end
  return filter.create(ws, string.format("%s pokus", s), {IDDruh=s, IDStav=s}, {'xxx', 'yyy'}, s)
end
xml/formregister.xml.txt · Poslední úprava: 2016/11/01 13:45 autor: Karel Petrů