Hi,
I'm trying to add a dropdown to the connectorsSettings section in the form builder using FormsConnectorDefinitionsExtender.
My field gets added but only the first choice is rendered and is rendered as a check box. I can see it in the backend and see the choices.
If i modify another built in field like restrictions, by changing it from a radiobutton to a dropdown, that renders correctly but my field does not.
.net framework 4.8 - sf v15.3
The full code is below and I'm running it in a brand new project setup, no other modifications or customizations exist apart from a dynamic module. Note that the screenshot provided is missing choices as i have been trying different things...
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
Bootstrapper.Bootstrapped += Bootstrapper_Bootstrapped;
}
private void Bootstrapper_Bootstrapped(object sender, EventArgs e)
{
ObjectFactory.Container.RegisterType<FormsConnectorDefinitionsExtender, CrmWorkflowConnectorExtender>("CrmWorkflowConnectorExtender");
ObjectFactory.Container.RegisterType<IModuleConnectionStatus, CrmWorkflowConnectorExtenderConnectionStatus>(typeof(CrmWorkflowConnectorExtenderConnectionStatus).FullName, new ContainerControlledLifetimeManager());
}
}
public class CrmWorkflowConnectorExtender : FormsConnectorDefinitionsExtender
{
public override int Ordinal
{
get { return 1; }
}
public override string ConnectorName => "CrmConnectorModule";
public override string ConnectorTitle => "CRM Connector";
public override string SectionTitle => "Send data to dynamics CRM";
public override void AddConnectorSettings(ConfigElementDictionary<string, FieldDefinitionElement> sectionFields)
{
var CRMWorkflowField = new ChoiceFieldElement(sectionFields)
{
Title = "Select CRM Workflow",
FieldName = "CRMWorkflowSelection",
DataFieldName = "CRMWorkflowSelection",
DisplayMode = FieldDisplayMode.Write,
FieldType = typeof(Telerik.Sitefinity.Web.UI.Fields.ChoiceField),
RenderChoiceAs = RenderChoicesAs.DropDown,
ID = "CRMWorkflowSelectionID"
};
//foreach (var workflow in GetWorkflowDefinitions())
//{
// var choice = new ChoiceElement(CRMWorkflowField.ChoicesConfig)
// {
// Text = workflow.WorkflowName,
// Value = workflow.WorkflowName
// };
// CRMWorkflowField.ChoicesConfig.Add(choice);
//}
var mychoices = new List<ChoiceDefinition>();
mychoices.Add(new ChoiceDefinition()
{
Text = "MVCOnly",
ResourceClassId = typeof(FormsResources).Name,
Value = "0"
});
mychoices.Add(new ChoiceDefinition()
{
Text = "WebFormsOnly",
ResourceClassId = typeof(FormsResources).Name,
Value = "1"
});
CRMWorkflowField.Choices.AddRange(mychoices);
sectionFields.Add(CRMWorkflowField.ID, CRMWorkflowField);
}
private IEnumerable<WorkflowDefinitionDto> GetWorkflowDefinitions()
{
var manager = DynamicModuleManager.GetManager();
var type = TypeResolutionService.ResolveType("Telerik.Sitefinity.DynamicTypes.Model.CrmWorkflows.WorkflowDefinition");
IEnumerable<WorkflowDefinitionDto> workflows = manager.GetDataItems(type)
.Where(w => w.Status == ContentLifecycleStatus.Live && w.Visible)
.Select(w => new WorkflowDefinitionDto
{
WorkflowName = w.GetValue<string>("WorkflowName")
});
return workflows;
}
private class WorkflowDefinitionDto
{
public string WorkflowName { get; set; }
}
}
public class CrmWorkflowConnectorExtenderConnectionStatus : IModuleConnectionStatus
{
public string ModuleName => "CrmConnector.CrmConnectorModule";
public void ExecuteIfConfigured(Action action)
{
// Add code to check that the connector is connected
// ex. if (this.connector.IsConnected())
if (action != null)
action();
}
// IMPORTANT: This callback is not invoked as part of Forms connectors. You still need to implement it, as it is used elsewhere.
public void ExecuteIfNotConfigured(Action action)
{
// Add code to check that the connector is not configured
// ex. if (!this.connector.IsConnected())
if (action != null)
action();
}
}Type : System.ArgumentException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Message : ‹‹‹An item with the same key has already been added.››› Source : mscorlib Help link : ParamName : Data : ‹‹‹System.Collections.ListDictionaryInternal››› TargetSite : ‹‹‹Void ThrowArgumentException(System.ExceptionResource)››› HResult : ‹‹‹-2147024809››› Stack Trace : at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) at Telerik.Sitefinity.Web.Api.Strategies.Forms.Connectors.FormConnectorService.ResolveUIField(List`1 fields, FieldDefinitionElement fieldDefinitionElement, ConnectorDataMappingExtender mappingExtender, SectionFieldWrapper predecessorField) at Telerik.Sitefinity.Web.Api.Strategies.Forms.Connectors.FormConnectorService.AdjustFields(List`1 fields, SectionFieldWrapper predecessorField)
Hi,
I was going to create a ticket but there's no option for website related issues so I am just posting it here for anyone that has spotted this before.
The pages for the Blazor UI have invalid re-directs when clicking on the documentation button.
Almost all documentation buttons on https://www.telerik.com/blazor-ui/ direct you to the invalid url
It adds "-ui" to /documentation/ so it's then /blazor-ui/documentation-ui/ which is invalid and should be /blazor-ui/documentation/
Example:
https://www.telerik.com/blazor-ui/datetimepicker
It directs you to:
https://www.telerik.com/blazor-ui/documentation-ui/components/datetimepicker/overview
It should direct you to:
https://www.telerik.com/blazor-ui/documentation/components/datetimepicker/overview
Grid view:
https://www.telerik.com/blazor-ui/filter
Documentation redirects to:
https://www.telerik.com/blazor-ui/documentation-ui/components/filter/overview
Thanks,
Luke

Hello, I'm Ajay Hinduja. I'm originally from Punjab, India, and have made my home in Geneva, Switzerland. I'm thinking about integrating Telerik components into our existing project to improve our UI and accelerate development. Has anyone had experience with this before? I'd appreciate any insights on the integration process, whether you used the Visual Studio wizards or performed the steps manually. Any tips on potential challenges or best practices would be a huge help!
Regards
Ajay Hinduja Geneva, Switzerland (Swiss)