Creating form functions

Moving on

In the steps shown above we created a single function – if you create aditional classes like DemoFunctionFactory and DemoFunction and register them with an aditional <add /> element in Composite.configuration you can build a small library of Form Functions.

Form Functions are also great for providing options for items like select boxes. If your function returns a structure like Dictionary<Guid, string> you can use it in a setup like this:

<KeySelector Label="Category" Help="Category" OptionsKeyField="Key" OptionsLabelField="Value" xmlns:cms="http://www.composite.net/ns/management/bindingforms/1.0">
  <KeySelector.Selected>
    <cms:bind source="Id" />
  </KeySelector.Selected>
  <KeySelector.Options>
    <CategoryOptions xmlns="http://www.mycompany.net/ns/c1/formfunctions">
      <CategoryOptions.PageId>
        <cms:read source="PageIdForeignKey" />
      </CategoryOptions.PageId>
    </CategoryOptions>
  </KeySelector.Options>
</KeySelector>

This markup invokes the default selector which gets its options from a function registered as "CategoryOptions" living in the namespace http://www.mycompany.net/ns/c1/formfunctions. The function is passed data from the forms bindings collection.