Master/Detail
From Plex-XML
A master detail screen is a combination of a single record screen with one or more dependent multi-record grids
--> See the Panel and Child page for a updated version of Master/Detail.
the Master/Detail screen above consists of two parts, a single record update page (X5a_Update) and a grid with child records (X5b_FB).
Both functions are defined as they would be when used independent in Plex-XML
- request-config.xml: like other request definitions but both with an own filter xslt
...
<webrequest name="X5b_FB">
<request name="X5b_FB" extends="FindBrowse"/>
<response>
<error type="default" name="DEFAULT"/>
<reaction type="DEFAULT" target="DISPLAY" localized="true" name="/WEB-INF/limon/filter/X5b_FB.xsl"/>
</response>
</webrequest>
<webrequest name="X5a_Update">
<request name="X5a_Update" extends="Update">
<plex-parameter type="web" name="UpdateKey_BookID">BookID</plex-parameter>
</request>
<response>
<error type="default" name="DEFAULT"/>
<error type="reaction" name="READY" response="X5a_Update" value="OK"/>
<reaction type="DEFAULT" target="DISPLAY" localized="true" name="/WEB-INF/limon/filter/X5a_Update.xsl"/>
<reaction type="READY" target="DISPLAY" usedefaultstyle="false" name="/WEB-INF/resources/@common_html@/ready.xslt"/>
</response>
</webrequest>
...
- X5b_FB.xsl: only a special toolbar added to pass the parent's Id
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="/WEB-INF/resources/common/DictionaryFindBrowse.xslt"/>
<!-- parent's Id to be used for Inserts -->
<xsl:variable name="TBookID">
<xsl:value-of select="/responses/response[@request-name='X5b_FB']/PleXMLIntern/FetchedData/rowhead/returnvalue[@name='TBookID']/@value"/>
</xsl:variable>
<!-- override Toolbar to add an Insert Button with preset the parent's Id -->
<xsl:template name="toolbar">
<toolbar>
<xsl:call-template name="gridtoolbar" />
<button row="false" text="{$t_InsertText}" alt="{$t_Insert}" image="add.gif">
<xsl:call-template name="onClickNewWindow">
<xsl:with-param name="param">
<formName>X5b_Insert</formName>
<param value="{$TBookID}">webValue</param>
<param value="TBookID">webFieldID</param>
</xsl:with-param>
</xsl:call-template>
</button>
</toolbar>
</xsl:template>
</xsl:stylesheet>
- X5aUpdate.xsl : this xslt combines both parts, below the update screen the grid is shown
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="/WEB-INF/resources/common/DictionaryEdit.xslt" />
<xsl:template name="MasterDetailGrid">
<!-- parent's Id will be passed to child request -->
<xsl:variable name="bookid" select="PleXMLIntern/UpdateKey/returnvalue[@implname='TBookID']/@unformatted" />
<inner_request>
<idiv>
<ajaxPageLoad style="ajax">
<request>X5b_FB</request>
<param value="TBookID">webFindName</param>
<param value="=">webFindOper</param>
<param value="{$bookid}">webFindValue</param>
</ajaxPageLoad>
</idiv>
</inner_request>
</xsl:template>
</xsl:stylesheet>
