London Dev Meetup Rescheduled! Due to unavoidable reasons, the event has been moved to 21st May. Speakers remain the same—any changes will be communicated. Seats are limited—register here to secure your spot!

How to use IExternalSystem & IAutofillProvider in custom form elements?

Vote:
0

Hello,

I have created a sample form on the Alloy template was able to successfully use IExternalSystem and IAutofillProvider on default form elements. I then created a custom form element derived from TextboxElementBlock (with its respective view):

Snippet

public class MultipleFieldFormBlock : TextboxElementBlock
{
    public virtual string Address { getset; }
    public virtual string Postcode { getset; }
    public virtual string City { getset; }
    public virtual string Country { getset; }
 

}

Dragging this control to form area successfully renders textboxes and I can download submitted form data. Here's a sample:

[{
"text": "name surname",
"text_1": "a@a.com",
"addressCollection": "{\"address\":\"Olofshöjdsgatan\",\"postcode\":\"412 80\",\"state\":\"Göteborg\",\"country\":\"Sweden\"}",
"submitted_from": "114",
"time": "9/28/2018 8:58:56 AM",
"by_user": "****",
"finalized": "True",
"systemcolumn_Language": "en"
}]

Using autofill on elements text and text_1 is not a problem, but how do I map external data to textboxes inside the adressCollection?

#197305
Sep 28, 2018 15:53
Vote:
0

In your element template you need to generate a DataList for specifed textbox (which is in AddressCollection).

<%= Model.RenderDataList() %>
public virtual string RenderDataList()
{
   var options = GetAutofillValues();
   if (options.Count() == 0)
   {
       return string.Empty;
   }

   var dataListBuilder = new StringBuilder();
   dataListBuilder.AppendFormat("<datalist id=\"{0}\">", Content.GetElementName());

   foreach (var item in options)
   {
       dataListBuilder.AppendFormat("<option value=\"{0}\" />", item);
   }

   dataListBuilder.Append("</datalist>");

   return dataListBuilder.ToString();
}

You might need to modify the method to get id of the textbox and render suggested values accordingly.

#197485
Oct 04, 2018 4:42
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.