/// <summary> /// Gets a list of selected Dynamics365Field objects. /// </summary> /// <param name="context">The context.</param> /// <param name="provider">The provider.</param> /// <param name="value">The value.</param> /// <returns>The selected objects.</returns> public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { IDataSourceFieldsProvider fieldsProvider = (IDataSourceFieldsProvider)context.Instance; BindingList <DataTableField> currentValue = (BindingList <DataTableField>)value; checkedListBox.Items.Clear(); checkedListBox.Items.Add("Select All", false); checkedListBox.ItemCheck += CheckedListBox_ItemCheck; List <DataTableField> fields = fieldsProvider.GetDataSourceFields(); fields.ForEach(field => checkedListBox.Items.Add(field, currentValue.Contains((DataTableField)field))); IWindowsFormsEditorService service = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); service.DropDownControl(checkedListBox); BindingList <DataTableField> checkedFields = new BindingList <DataTableField>(); for (int itemIndex = 0; itemIndex < checkedListBox.CheckedIndices.Count; itemIndex++) { if (checkedListBox.CheckedIndices[itemIndex] != 0) { DataTableField field = (DataTableField)checkedListBox.CheckedItems[itemIndex]; checkedFields.Add(field); } } return(checkedFields); }
/// <summary> /// Converts a value from a string to a DataColumn. /// </summary> /// <param name="context">The context.</param> /// <param name="culture">The culture.</param> /// <param name="value">The value to convert.</param> /// <returns>A DataColumn.</returns> public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { if (!string.IsNullOrEmpty((string)value)) { IDataSourceFieldsProvider provider = (IDataSourceFieldsProvider)context.Instance; List <DataTableField> fields = provider.GetDataSourceFields(); string columnName = Regex.Match((string)value, CoreUtility.FieldMatchPattern).Groups[1].Value; return(fields.First(field => field.ColumnName == columnName)); } return(null); }
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { BindingList <DataTableField> fields = new BindingList <DataTableField>(); if (!string.IsNullOrEmpty((string)value)) { IDataSourceFieldsProvider fieldsProvider = (IDataSourceFieldsProvider)context.Instance; List <DataTableField> sourceFields = fieldsProvider.GetDataSourceFields(); string[] fieldStrings = ((string)value).Split(new string[] { FIELD_DELIMITER }, StringSplitOptions.None); foreach (string fieldString in fieldStrings) { string columnName = Regex.Match(fieldString, CoreUtility.FieldMatchPattern).Groups[1].Value; DataTableField field = sourceFields.FirstOrDefault(f => f.ColumnName == columnName); // todo - comparer fields.Add(field); } } return(fields); }
/// <summary> /// Gets a list of Operation DataColumn objects. /// </summary> /// <param name="context">The context.</param> /// <returns>The list of Operation DataColumn objects.</returns> public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) { IDataSourceFieldsProvider provider = (IDataSourceFieldsProvider)context.Instance; return(new StandardValuesCollection(provider.GetDataSourceFields())); }