Мое поле добавляется, но отображается только первый вариант, который отображается как флажок. Я вижу это в серверной части и вижу варианты выбора.
Если я изменю другое встроенное поле, например ограничения, изменив его с переключателя на раскрывающийся список, это будет отображаться правильно, но мое поле — нет.
.net framework 4.8 — sf v15.3
Полный код приведен ниже, и я запускаю его в совершенно новой настройке проекта, никаких других модификаций или настроек, кроме динамического, не существует. модуль. Обратите внимание, что на представленном снимке экрана отсутствуют варианты выбора, поскольку я пробовал разные вещи...
’’’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("CrmWorkflowConnectorExtender");
ObjectFactory.Container.RegisterType(typeof(CrmWorkflowConnectorExtenderConnectionStatus).FullName, new ContainerControlledLifetimeManager());
}
публичный класс 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 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();
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 GetWorkflowDefinitions()
{
var manager = DynamicModuleManager.GetManager();
var type = TypeResolutionService.ResolveType("Telerik.Sitefinity.DynamicTypes.Model.CrmWorkflows.WorkflowDefinition");
IEnumerable workflows = manager.GetDataItems(type)
.Where(w => w.Status == ContentLifecycleStatus.Live && w.Visible)
.Select(w => new WorkflowDefinitionDto
{
WorkflowName = w.GetValue("WorkflowName")
});
return workflows;
}
private class WorkflowDefinitionDto
{
public string WorkflowName { get; set; }
}
публичный класс CrmWorkflowConnectorExtenderConnectionStatus: IModuleConnectionStatus
{
публичная строка 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();
}
Ошибка:
''' Тип: System.ArgumentException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Сообщение: ‹‹‹Элемент с таким же ключом уже был добавлено.›››
Источник: mscorlib
Ссылка на справку:
ParamName:
Данные: ‹‹‹System.Collections.ListDictionaryInternal>
TargetSite: ‹‹‹Void ThrowArgumentException(System.ExceptionResource)›››
HResult : ‹‹‹-2147024809>
Трассировка стека: в System.ThrowHelper.ThrowArgumentException(ресурс ExceptionResource)
в System.Collections.Generic.Dictionary
Код: Выделить всё
2.Insert(TKey key, TValue value, Boolean add) at Telerik.Sitefinity.Web.Api.Strategies.Forms.Connectors.FormConnectorService.ResolveUIField(Listat Telerik.Sitefinity.Web.Api.Strategies.Forms.Connectors.FormConnectorService.AdjustFields(Поля списка 1, РазделFieldWrapper previousField)’’’

Подробнее здесь: https://stackoverflow.com/questions/797 ... ettings-se
Мобильная версия