FormFields Element

The FormFields element contains individual FormField elements that describe the individual search criteria user interface controls that are tied to parameters within the table-valued function. Each form field provides a data entry control that is tied to a parameter within the table-valued function. In this way, users can enter a filter value into each form field. When the filter is applied, the data from the form fields is passed into the corresponding table-valued function parameters where it is typically used as part of a WHERE clause.

While the figure below provides a single form field for the list builder filter, you can include multiple FormField elements within the FormMetaData element.

element contains form fields that provide user interface search criteria for the list builder's filter.

In the screen shot and partial code sample below, a FormMetaData element defines a filter for the list builder that limits the rows returned for a particular food bank organization. After the Apply button applies the filter, the form field parameter value is passed back to the table-valued function (TVF) as a parameter. The SQL within the TVF utilizes the parameter in the WHERE clause.

Filter the food bank transactions with a food bank filter.
<QueryViewSpec 
  xmlns="bb_appfx_queryview" 
  xmlns:common="bb_appfx_commontypes" 
  ID="AE91E1A7-2130-409C-8D06-198030EB0AA7" 
  Name="Food Bank TX List Builder Query CompositeColumn" 
  Description="Returns transactions for each food bank.       
  Used on the FoodBankWidgetDashboard.Page.xml.       
  Page name Food Banks with ID of 753229b2-9549-41ce-8058-027e9b5e9230" 
  Author="Technical Training" 
  IsRoot="false" 
  PrimaryKeyField="FOODBANKTXDETAILID" 
  RecordType="Food Bank Transaction Detail" 
  common:SecurityUIFolder="Constituent\Food Bank\Food Bank Transaction Header\Food Bank Transaction Detail" 
  AllowAttributeExtension="false" >
  <TVFImplementation FunctionName="USR_UFN_QUERY_FOODBANKTXDETAIL_LISTBUILDER2">
    <CreateFunctionSQL>

      create function dbo.USR_UFN_QUERY_FOODBANKTXDETAIL_LISTBUILDER2(@FOODBANKID uniqueidentifier = null)
      returns table
      as
      RETURN
      WITH CTE
      AS
      (
      SELECT
      USR_FOODBANK.CONSTITUENTID AS FBCONSTITUENTID
      , USR_FOODBANKTXHEADER.ID as FOODBANKTXHEADERID
      , USR_FOODBANKTXDETAIL.ID as FOODBANKTXDETAILID
      , CONSTITUENT.NAME AS FBCONSTITUENTNAME
      , USR_FOODBANKTYPECODE.DESCRIPTION AS FOODBANKTYPE
      , USR_FOODBANKTXHEADER.CONSTITUENTID AS TXCONSTITUENTID
      , CONSTITUENT_1.NAME AS TXCONSTITUENTNAME
      , USR_FOODBANKTXHEADER.FOODBANKTXTYPE
      , USR_FOODBANKTXHEADER.TXDATE
      , USR_FOODBANKTXHEADER.RECEIPTPRINTED
      , USR_FOODBANKTXHEADER.DATEADDED AS TXDATEADDED
      , USR_FOODBANKTXHEADER.DATECHANGED AS TXDATECHANGED
      , USR_FOODITEM.NAME as FOODITEMNAME
      , USR_FOODBANKTXDETAIL.FOODITEMAMOUNT
      , USR_FOODBANKTXDETAIL.LINEAMOUNT
      , USR_FOODBANKTXDETAIL.QUANTITY
      , USR_FOODITEM.CURRENTCOST
      , USR_FOODITEM.LOWINVENTORYTHRESHOLD
      , USR_FOODITEM.WEIGHT

      ,TWITTERUSERID  = ISNULL((SELECT
      [USERID]
      FROM [SOCIALMEDIAACCOUNT]
      INNER JOIN SOCIALMEDIASERVICE ON SOCIALMEDIASERVICE.ID = SOCIALMEDIAACCOUNT.SOCIALMEDIASERVICEID
      --INNER JOIN USR_FOODBANK ON USR_FOODBANK.CONSTITUENTID = SOCIALMEDIAACCOUNT.CONSTITUENTID
      WHERE SOCIALMEDIAACCOUNT.CONSTITUENTID =  USR_FOODBANK.CONSTITUENTID
      AND SOCIALMEDIASERVICE.NAME = 'Twitter'),'')

      , TWITTERURL = ISNULL((SELECT [URL]
      FROM [SOCIALMEDIAACCOUNT]
      INNER JOIN SOCIALMEDIASERVICE ON SOCIALMEDIASERVICE.ID = SOCIALMEDIAACCOUNT.SOCIALMEDIASERVICEID
      --  INNER JOIN USR_FOODBANK ON USR_FOODBANK.CONSTITUENTID = SOCIALMEDIAACCOUNT.CONSTITUENTID
      WHERE SOCIALMEDIAACCOUNT.CONSTITUENTID = USR_FOODBANK.CONSTITUENTID
      AND SOCIALMEDIASERVICE.NAME = 'Twitter'),'')

      , FACEBOOKUSERID = 	ISNULL((SELECT
      [USERID]
      FROM [BBInfinity].[dbo].[SOCIALMEDIAACCOUNT]
      INNER JOIN SOCIALMEDIASERVICE ON SOCIALMEDIASERVICE.ID = SOCIALMEDIAACCOUNT.SOCIALMEDIASERVICEID
      --INNER JOIN USR_FOODBANK ON USR_FOODBANK.CONSTITUENTID = SOCIALMEDIAACCOUNT.CONSTITUENTID
      WHERE SOCIALMEDIAACCOUNT.CONSTITUENTID =  USR_FOODBANK.CONSTITUENTID
      AND SOCIALMEDIASERVICE.NAME = 'Facebook'),'')

      , FACEBOOKURL = ISNULL((SELECT [URL]
      FROM [BBInfinity].[dbo].[SOCIALMEDIAACCOUNT]
      INNER JOIN SOCIALMEDIASERVICE ON SOCIALMEDIASERVICE.ID = SOCIALMEDIAACCOUNT.SOCIALMEDIASERVICEID
      --INNER JOIN USR_FOODBANK ON USR_FOODBANK.CONSTITUENTID = SOCIALMEDIAACCOUNT.CONSTITUENTID
      WHERE SOCIALMEDIAACCOUNT.CONSTITUENTID = USR_FOODBANK.CONSTITUENTID
      AND SOCIALMEDIASERVICE.NAME = 'Facebook'),'')

      FROM         USR_FOODBANK INNER JOIN
      USR_FOODBANKTXHEADER ON USR_FOODBANK.ID = USR_FOODBANKTXHEADER.FOODBANKID INNER JOIN
      USR_FOODBANKTXDETAIL ON USR_FOODBANKTXHEADER.ID = USR_FOODBANKTXDETAIL.FOODBANKTXHEADERID INNER JOIN
      USR_FOODBANKTYPECODE ON USR_FOODBANK.FOODBANKTYPECODEID = USR_FOODBANKTYPECODE.ID INNER JOIN
      USR_FOODITEM ON USR_FOODBANKTXDETAIL.FOODITEMID = USR_FOODITEM.ID INNER JOIN
      CONSTITUENT ON USR_FOODBANK.CONSTITUENTID = CONSTITUENT.ID INNER JOIN
      CONSTITUENT AS CONSTITUENT_1 ON USR_FOODBANKTXHEADER.CONSTITUENTID = CONSTITUENT_1.ID
      WHERE (@FOODBANKID is null
      or USR_FOODBANK.CONSTITUENTID = @FOODBANKID)
      )

      SELECT
      FBCONSTITUENTID
      , FOODBANKTXHEADERID
      , FOODBANKTXDETAILID
      , FBCONSTITUENTNAME
      , FOODBANKTYPE
      , TXCONSTITUENTID
      , TXCONSTITUENTNAME
      , FOODBANKTXTYPE
      , TXDATE
      , RECEIPTPRINTED
      , TXDATEADDED
      , TXDATECHANGED
      , FOODITEMNAME
      , FOODITEMAMOUNT
      , LINEAMOUNT
      , QUANTITY
      , CURRENTCOST
      , LOWINVENTORYTHRESHOLD
      , WEIGHT

      ,TWITTERUSERID as SOCIAL_TWITTERUSERID
      , TWITTERURL as SOCIAL_TWITTERURL
      , 'catalog:Blackbaud.CustomFx.FoodBank.Catalog.dll,Blackbaud.CustomFx.FoodBank.Catalog.twitter16.png' 
      as SOCIAL_TWITTERIMAGEKEY

      , FACEBOOKUSERID as SOCIAL_FACEBOOKUSERID
      , FACEBOOKURL	as SOCIAL_FACEBOOKURL
      , 'catalog:Blackbaud.CustomFx.FoodBank.Catalog.dll,Blackbaud.CustomFx.FoodBank.Catalog.facebook.png'  
      as SOCIAL_FACEBOOKIMAGEKEY

      , 'catalog:Blackbaud.CustomFx.FoodBank.Catalog.dll,Blackbaud.CustomFx.FoodBank.Catalog.twitter16.png' 
      as TESTIMAGEKEY
      
      FROM CTE
    </CreateFunctionSQL>
    <Parameters>
      <common:FormMetaData>
        <common:FormFields>
          <common:FormField FieldID="FOODBANKID" Caption="Food Bank" Required="false" DataType="Guid">
            <common:SearchList SearchListID="3eceea4c-cf42-4938-9cf1-c7c77ebc7dc9" EnableQuickFind="true" />
          </common:FormField>
        </common:FormFields>
        
      </common:FormMetaData>
    </Parameters>
  </TVFImplementation>
  <Output>
    <OutputFields> ...