Master/Detail

From Plex-XML
Jump to: navigation, search

A master detail screen is a combination of a single record screen with one or more dependent multi-record grids


Hint.png --> See the Panel and Child page for a updated version of Master/Detail.


TSBook.png


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>
Personal tools