private static TriggerBase CreateTrigger(EntityFieldInfo fieldInfo, IDataService dataService, GenericDataListState state, Nullable<Boolean> isLocked, FrameworkElement element) { TriggerBase trigger = null; if (isLocked.HasValue) { MultiDataTrigger multiDataTrigger = new MultiDataTrigger(); Condition conditionState = new Condition(); conditionState.Binding = CreateBindingState(element); conditionState.Value = state; multiDataTrigger.Conditions.Add(conditionState); Condition conditionIsLocked = new Condition(); conditionIsLocked.Binding = CreateBindingIsLocked(element); conditionIsLocked.Value = isLocked.Value; multiDataTrigger.Conditions.Add(conditionIsLocked); multiDataTrigger.Setters.Add(DataControlTemplateBuilder.CreateSetter(fieldInfo, dataService, state, isLocked, element)); trigger = multiDataTrigger; } else { DataTrigger dataTrigger = new DataTrigger(); dataTrigger.Binding = DataControlTemplateBuilder.CreateBindingState(element); dataTrigger.Value = state; dataTrigger.Setters.Add(DataControlTemplateBuilder.CreateSetter(fieldInfo, dataService, state, isLocked, element)); trigger = dataTrigger; } return trigger; }
internal static System.Windows.DataTemplate CreateCellTemplate(EntityFieldInfo entityFieldInfo,DataGrid dataGrid) { DataTemplate dataTemplate = new DataTemplate(); FrameworkElementFactory contentControl = new FrameworkElementFactory(typeof(ContentControl)); contentControl.SetBinding(ContentControl.ContentProperty, new Binding()); Style contentControlStyle = new Style(); contentControl.SetValue(ContentControl.StyleProperty, contentControlStyle); DataTemplate tpl = new DataTemplate(); if (entityFieldInfo.ControlType == Infrastructure.Attributes.ControlType.Color) { FrameworkElementFactory grid = new FrameworkElementFactory(typeof(Grid)); Binding binding = CreateBindingOneWay(entityFieldInfo.Path); binding.Converter = new StringToBrushConverter(); grid.SetBinding(Grid.BackgroundProperty, binding); tpl.VisualTree = grid; contentControlStyle.Setters.Add(new Setter(ContentControl.ContentTemplateProperty, tpl)); dataTemplate.VisualTree = contentControl; } else { FrameworkElementFactory textBox = new FrameworkElementFactory(typeof(TextBlock)); if (entityFieldInfo.ControlType == Infrastructure.Attributes.ControlType.Pr) { textBox.SetValue(TextBlock.TextAlignmentProperty, TextAlignment.Right); } textBox.SetBinding(TextBlock.TextProperty, CreateBindingOneWay(entityFieldInfo.Path)); tpl.VisualTree = textBox; contentControlStyle.Setters.Add(new Setter(ContentControl.ContentTemplateProperty, tpl)); dataTemplate.VisualTree = contentControl; } return dataTemplate; }
private static SetterBase CreateSetter(EntityFieldInfo fieldInfo, IDataService dataService, GenericDataListState state, bool? isLocked, FrameworkElement element) { Setter setter = new Setter(); setter.Property = ContentControl.ContentTemplateProperty; setter.Value = DataControlTemplateBuilder.CreateTemplate(fieldInfo, dataService, state, isLocked,element); return setter; }
public GenericDataGridTemplateColumn(EntityFieldInfo fieldInfo,DataGrid dataGrid) { this.FieldInfo = fieldInfo; this.Header = this.FieldInfo.DisplayName; this.CellTemplate = DataGridTemplateBuilder.CreateCellTemplate(this.FieldInfo, dataGrid); this.CellEditingTemplate = DataGridTemplateBuilder.CreateCellEditingTemplate(this.FieldInfo, dataGrid); }
internal static Style CreateStyle(EntityFieldInfo fieldInfo,IDataService dataService,FrameworkElement element) { Style style = new Style(); style.Triggers.Add(DataControlTemplateBuilder.CreateTrigger(fieldInfo, dataService, GenericDataListState.Search, null, element)); style.Triggers.Add(DataControlTemplateBuilder.CreateTrigger(fieldInfo, dataService, GenericDataListState.Display, true, element)); style.Triggers.Add(DataControlTemplateBuilder.CreateTrigger(fieldInfo, dataService, GenericDataListState.Display, false, element)); style.Triggers.Add(DataControlTemplateBuilder.CreateTrigger(fieldInfo, dataService, GenericDataListState.InsertingDisplay, false, element)); style.Triggers.Add(DataControlTemplateBuilder.CreateTrigger(fieldInfo, dataService, GenericDataListState.InsertingEmpty, false, element)); return style; }
public override bool ValidateString(EntityFieldInfo fieldInfo, string valueString, out string message, out object result) { if (String.IsNullOrEmpty (valueString )) { message = "valeur vide non autorisé"; result = null; return false ; } else { message =null; result = valueString; return true; } }
internal static System.Windows.DataTemplate CreateCellEditingTemplate(EntityFieldInfo entityFieldInfo,DataGrid dataGrid) { DataTemplate dataTemplate = new DataTemplate(); FrameworkElementFactory contentControl = new FrameworkElementFactory(typeof(ContentControl)); contentControl.SetBinding(ContentControl.ContentProperty, new Binding()); Style contentControlStyle = new Style(); contentControlStyle.Triggers.Add(CreateTrigger(entityFieldInfo, GenericDataListState.Search, dataGrid)); contentControlStyle.Triggers.Add(CreateTrigger(entityFieldInfo, GenericDataListState.Display, dataGrid)); contentControlStyle.Triggers.Add(CreateTrigger(entityFieldInfo, GenericDataListState.InsertingEmpty, dataGrid)); contentControlStyle.Triggers.Add(CreateTrigger(entityFieldInfo, GenericDataListState.Updating, dataGrid)); contentControlStyle.Triggers.Add(CreateTrigger(entityFieldInfo, GenericDataListState.InsertingDisplay, dataGrid)); contentControl.SetValue(ContentControl.StyleProperty, contentControlStyle); contentControl.AddHandler(ContentControl.GotFocusEvent, new RoutedEventHandler(OnContentControlGotFocus)); dataTemplate.VisualTree = contentControl; return dataTemplate; }
public override bool ValidateString(EntityFieldInfo fieldInfo, string valueString, out string message, out object result) { if (fieldInfo.ParentColumnInfo == null) { if (fieldInfo.ControlType == Attributes.ControlType.Pr) { if (Validator.ValidateDataType(valueString, typeof (String), out message, out result)) { return true; } else { return false; } } else { if (fieldInfo.ControlType == Attributes.ControlType.Pr) { if (Validator.ValidateDataType(valueString, typeof(String), out message, out result)) { return true; } else { return false; } } else { if (Validator.ValidateDataType(valueString, fieldInfo.ColumnInfo.PropertyType, out message, out result)) { return true; } else { return false; } } } } else { if (fieldInfo.ControlType == Attributes.ControlType.Pr) { if (Validator.ValidateDataType(valueString, typeof(string), out message, out result)) { return true; } else { return false; } } else { if (Validator.ValidateDataType(valueString, fieldInfo.ParentColumnInfo.PropertyType, out message, out result)) { return true; } else { return false; } } } }
private static FrameworkElementFactory CreateTemplateText(EntityFieldInfo entityFieldInfo, GenericDataListState state, DataGrid dataGrid) { FrameworkElementFactory textBox = new FrameworkElementFactory(typeof(TextBox)); textBox.SetBinding(TextBox.TextProperty, CreateBindingTwoWay(entityFieldInfo.Path)); return textBox; }
private static DataTrigger CreateTrigger(EntityFieldInfo entityFieldInfo, GenericDataListState state, DataGrid dataGrid) { DataTrigger dataTrigger = new DataTrigger(); dataTrigger.Binding = CreateBindingState(state, dataGrid); dataTrigger.Value = state; dataTrigger.Setters.Add(CreateSetter(entityFieldInfo, state, dataGrid)); return dataTrigger; }
private static FrameworkElementFactory CreateTemplateCombo(EntityFieldInfo entityFieldInfo, GenericDataListState state, DataGrid dataGrid) { String[] items = entityFieldInfo.Path.Split(".".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); FrameworkElementFactory comboBox = new FrameworkElementFactory(typeof(ComboBox)); if (state == GenericDataListState.Search) { comboBox.SetValue(ComboBox.IsEditableProperty, true); } String comboListPath = "ComboItemsSource[" + items[items.Length - 2] + "." + items[items.Length - 1] + "]"; Binding bindingList = new Binding(comboListPath); bindingList.Mode = BindingMode.OneWay; bindingList.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; comboBox.SetBinding(ComboBox.ItemsSourceProperty, bindingList); Binding binding = new Binding(); binding.Path = new PropertyPath("[" + entityFieldInfo.Path + "]"); binding.Mode = BindingMode.TwoWay; binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; binding.ValidatesOnDataErrors = true; comboBox.SetBinding(ComboBox.SelectedItemProperty, binding); return comboBox; }
private static FrameworkElementFactory CreateTemplateDate(EntityFieldInfo entityFieldInfo, GenericDataListState state, DataGrid dataGrid) { FrameworkElementFactory grid = new FrameworkElementFactory(typeof(Grid)); var column1 = new FrameworkElementFactory(typeof(ColumnDefinition)); column1.SetValue(ColumnDefinition.WidthProperty, new GridLength(1, GridUnitType.Star)); var column2 = new FrameworkElementFactory(typeof(ColumnDefinition)); column2.SetValue(ColumnDefinition.WidthProperty, new GridLength(1, GridUnitType.Auto)); grid.AppendChild(column1); grid.AppendChild(column2); FrameworkElementFactory textBox = new FrameworkElementFactory(typeof(TextBox)); textBox.SetBinding(TextBox.TextProperty, CreateBindingTwoWay(entityFieldInfo.Path)); textBox.SetValue(Grid.ColumnProperty, 0); grid.AppendChild(textBox); FrameworkElementFactory datePicker = new FrameworkElementFactory(typeof(DatePicker)); datePicker.SetValue(DatePicker.WidthProperty, 28D); datePicker.SetValue(Grid.ColumnProperty, 1); grid.AppendChild(datePicker); Binding bindingSelectedDate = new Binding("[" + entityFieldInfo.Path + "]"); bindingSelectedDate.Mode = BindingMode.TwoWay; bindingSelectedDate.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; bindingSelectedDate.Converter = new StringToDateConverter(); datePicker.SetBinding(DatePicker.SelectedDateProperty, bindingSelectedDate); return grid; }
private static FrameworkElementFactory CreateTemplateCheck(EntityFieldInfo entityFieldInfo, GenericDataListState state, DataGrid dataGrid) { FrameworkElementFactory comboBox = new FrameworkElementFactory(typeof(ComboBox)); if (state == GenericDataListState.Search) { comboBox.SetValue(ComboBox.IsEditableProperty, true); } List<String> items = new List<string>(); items.Add(CultureConfiguration.BooleanNullString); items.Add(CultureConfiguration.BooleanTrueString); items.Add(CultureConfiguration.BooleanFalseString); comboBox.SetValue(ComboBox.ItemsSourceProperty, items); Binding binding = new Binding(); binding.Path = new PropertyPath("[" +entityFieldInfo.Path +"]"); binding.Mode = BindingMode.TwoWay; binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; binding.ValidatesOnDataErrors = true; comboBox.SetBinding(ComboBox.SelectedItemProperty, binding); return comboBox; }
private static FrameworkElementFactory CreateTemplateColor(EntityFieldInfo entityFieldInfo, GenericDataListState state, DataGrid dataGrid) { FrameworkElementFactory colorPicker = new FrameworkElementFactory(typeof(ColorPicker)); Binding binding = CreateBindingTwoWay(entityFieldInfo.Path); binding.Converter = new StringToColorConverter(); colorPicker.SetBinding(ColorPicker.SelectedColorProperty, binding); return colorPicker; }
private static Setter CreateSetter(EntityFieldInfo entityFieldInfo, GenericDataListState state, DataGrid dataGrid) { Setter setter = new Setter(); setter.Property = ContentControl.ContentTemplateProperty; setter.Value = CreateTemplate(entityFieldInfo, state, dataGrid); return setter; }
private static DataTemplate CreateTemplate(EntityFieldInfo entityFieldInfo, GenericDataListState state, DataGrid dataGrid) { DataTemplate dataTemplate = new DataTemplate(); if (entityFieldInfo.IsNeeded == false && entityFieldInfo.IsMainTableField == false && state != GenericDataListState.Search) { return CreateCellTemplate(entityFieldInfo, dataGrid); } else { switch (entityFieldInfo .ControlType ) { case Infrastructure.Attributes.ControlType.Check : dataTemplate.VisualTree = CreateTemplateCheck(entityFieldInfo, state, dataGrid); break; case Infrastructure.Attributes.ControlType.Color : dataTemplate.VisualTree = CreateTemplateColor(entityFieldInfo, state, dataGrid); break; case Infrastructure.Attributes.ControlType.Date : dataTemplate.VisualTree = CreateTemplateDate(entityFieldInfo, state, dataGrid); break; case Infrastructure.Attributes.ControlType.Decimal : dataTemplate.VisualTree = CreateTemplateDecimal(entityFieldInfo, state, dataGrid); break; case Infrastructure.Attributes.ControlType.Integer : dataTemplate.VisualTree = CreateTemplateInteger(entityFieldInfo, state, dataGrid); break; case Infrastructure.Attributes.ControlType.Pr : dataTemplate.VisualTree = CreateTemplatePr(entityFieldInfo, state, dataGrid); break; case Infrastructure.Attributes.ControlType.Text : dataTemplate.VisualTree = CreateTemplateText(entityFieldInfo, state, dataGrid); break; case Infrastructure.Attributes.ControlType.Combo: dataTemplate.VisualTree = CreateTemplateCombo(entityFieldInfo, state, dataGrid); break; } } return dataTemplate; }
private static DataTemplate CreateTemplateSearch(EntityFieldInfo fieldInfo, IDataService dataService, FrameworkElement element) { Type propertyType = null; DataTemplate dataTemplate = new DataTemplate(); if ( fieldInfo.ColumnInfo != null) { propertyType = fieldInfo.ColumnInfo.PropertyType;} if (fieldInfo.ParentColumnInfo != null) { propertyType = fieldInfo.ParentColumnInfo.PropertyType; } if (fieldInfo.ControlType == ControlType.Combo) { String[] items = fieldInfo.Path.Split(".".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); FrameworkElementFactory comboBox = new FrameworkElementFactory(typeof(ComboBox)); comboBox.SetValue(ComboBox.HeightProperty, 22D); String comboListPath = "ItemsView.CurrentItem.ComboItemsSource[" + items[items.Length - 2] + "." + items[items.Length - 1] + "]"; Binding bindingList = new Binding(comboListPath); bindingList.Mode = BindingMode.OneWay; bindingList.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; comboBox.SetBinding(ComboBox.ItemsSourceProperty, bindingList); comboBox.SetValue(ComboBox.IsEditableProperty, true); Binding binding = new Binding(); binding.Path = new PropertyPath("ItemsView.CurrentItem[" + fieldInfo.Path + "]"); binding.Mode = BindingMode.TwoWay; binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; binding.ValidatesOnDataErrors = true; comboBox.SetBinding(ComboBox.SelectedItemProperty, binding); dataTemplate.VisualTree = comboBox; } else if (fieldInfo.ControlType == Infrastructure.Attributes.ControlType.Color) { FrameworkElementFactory colorPicker = new FrameworkElementFactory(typeof(ColorPicker)); Binding binding = CreateBindingTwoWay(fieldInfo.Path); colorPicker.SetValue(ColorPicker.MinHeightProperty, 22D); binding.Converter = new StringToColorConverter(); colorPicker.SetBinding(ColorPicker.SelectedColorProperty, binding); dataTemplate.VisualTree = colorPicker; } else if (fieldInfo.ControlType == Infrastructure.Attributes.ControlType.Check) { FrameworkElementFactory comboBox = new FrameworkElementFactory(typeof(ComboBox)); comboBox.SetValue(ComboBox.IsEditableProperty, true); List<String> items = new List<string>(); items.Add(CultureConfiguration.BooleanNullString); items.Add(CultureConfiguration.BooleanTrueString); items.Add(CultureConfiguration.BooleanFalseString); comboBox.SetValue(ComboBox.ItemsSourceProperty, items); Binding binding = new Binding(); binding.Path = new PropertyPath("ItemsView.CurrentItem[" + fieldInfo.Path + "]"); binding.Mode = BindingMode.TwoWay; binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; binding.ValidatesOnDataErrors = true; comboBox.SetBinding(ComboBox.SelectedItemProperty, binding); dataTemplate.VisualTree = comboBox; } else if (propertyType.Equals(typeof(DateTime)) || propertyType.Equals(typeof(Nullable<DateTime>))) { FrameworkElementFactory grid = new FrameworkElementFactory(typeof(Grid)); grid.SetValue(Grid.HeightProperty, 22D); var column1 = new FrameworkElementFactory(typeof(ColumnDefinition)); column1.SetValue(ColumnDefinition.WidthProperty, new GridLength(1, GridUnitType.Star)); var column2 = new FrameworkElementFactory(typeof(ColumnDefinition)); column2.SetValue(ColumnDefinition.WidthProperty, new GridLength(1, GridUnitType.Auto)); grid.AppendChild(column1); grid.AppendChild(column2); FrameworkElementFactory textBox = new FrameworkElementFactory(typeof(TextBox)); textBox.SetBinding(TextBox.TextProperty, CreateBindingTwoWay(fieldInfo.Path)); textBox.SetValue(Grid.ColumnProperty, 0); grid.AppendChild(textBox); FrameworkElementFactory datePicker = new FrameworkElementFactory(typeof(DatePicker)); datePicker.SetValue(DatePicker.WidthProperty, 28D); datePicker.SetValue(Grid.ColumnProperty, 1); grid.AppendChild(datePicker); Binding bindingSelectedDate = new Binding("ItemsView.CurrentItem[" + fieldInfo.Path + "]"); bindingSelectedDate.Mode = BindingMode.TwoWay; bindingSelectedDate.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; bindingSelectedDate.Converter = new StringToDateConverter(); datePicker.SetBinding(DatePicker.SelectedDateProperty, bindingSelectedDate); dataTemplate.VisualTree = grid; } else if (propertyType.Equals(typeof(String)) || propertyType.Equals(typeof(Int64)) || propertyType.Equals(typeof(Nullable<Int64>)) || propertyType.Equals(typeof(Double)) || propertyType.Equals(typeof(Nullable<Double>))) { FrameworkElementFactory textBox = new FrameworkElementFactory(typeof(TextBox)); textBox.SetValue(TextBox.MinHeightProperty, 22D); textBox.SetBinding(TextBox.TextProperty, CreateBindingTwoWay(fieldInfo.Path)); dataTemplate.VisualTree = textBox; } return dataTemplate; }
private static object CreateTemplate(EntityFieldInfo fieldInfo, IDataService dataService, GenericDataListState state, bool? isLocked, FrameworkElement element) { if (isLocked.HasValue) { if (isLocked.Value == true) { if (state == GenericDataListState.Deleting) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService,element); } else if (state == GenericDataListState.Display) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else if (state == GenericDataListState.InsertingDisplay) { if (fieldInfo.IsNeeded == false && fieldInfo.IsMainTableField == false) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else { return DataControlTemplateBuilder.CreateTemplateEdit(fieldInfo, dataService, element); } } else if (state == GenericDataListState.InsertingEmpty) { if (fieldInfo.IsNeeded == false && fieldInfo.IsMainTableField == false) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else { return DataControlTemplateBuilder.CreateTemplateEdit(fieldInfo, dataService, element); } } else if (state == GenericDataListState.Search) { return DataControlTemplateBuilder.CreateTemplateSearch(fieldInfo, dataService, element); } else if (state == GenericDataListState.Updating) { if (fieldInfo.IsNeeded == false && fieldInfo.IsMainTableField == false) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else { return DataControlTemplateBuilder.CreateTemplateEdit(fieldInfo, dataService, element); } } } else { if (state == GenericDataListState.Deleting) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else if (state == GenericDataListState.Display) { if (fieldInfo.IsNeeded == false && fieldInfo.IsMainTableField == false) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else { return DataControlTemplateBuilder.CreateTemplateEdit(fieldInfo, dataService, element); } } else if (state == GenericDataListState.InsertingDisplay) { if (fieldInfo.IsNeeded == false && fieldInfo.IsMainTableField == false) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else { return DataControlTemplateBuilder.CreateTemplateEdit(fieldInfo, dataService, element); } } else if (state == GenericDataListState.InsertingEmpty) { if (fieldInfo.IsNeeded == false && fieldInfo.IsMainTableField == false) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else { return DataControlTemplateBuilder.CreateTemplateEdit(fieldInfo, dataService, element); } } else if (state == GenericDataListState.Search) { return CreateTemplateSearch(fieldInfo, dataService, element); } else if (state == GenericDataListState.Updating) { if (fieldInfo.IsNeeded == false && fieldInfo.IsMainTableField == false) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else { return DataControlTemplateBuilder.CreateTemplateEdit(fieldInfo, dataService, element); } } } } else { if (state == GenericDataListState.Deleting) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else if (state == GenericDataListState.Display) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else if (state == GenericDataListState.InsertingDisplay) { if (fieldInfo.IsNeeded == false && fieldInfo.IsMainTableField == false) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else { return DataControlTemplateBuilder.CreateTemplateEdit(fieldInfo, dataService, element); } } else if (state == GenericDataListState.InsertingEmpty) { if (fieldInfo.IsNeeded == false && fieldInfo.IsMainTableField == false) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else { return DataControlTemplateBuilder.CreateTemplateEdit(fieldInfo, dataService, element); } } else if (state == GenericDataListState.Search) { return DataControlTemplateBuilder.CreateTemplateSearch(fieldInfo, dataService, element); } else if (state == GenericDataListState.Updating) { if (fieldInfo.IsNeeded == false && fieldInfo.IsMainTableField == false) { return DataControlTemplateBuilder.CreateTemplateDisplay(fieldInfo, dataService, element); } else { return DataControlTemplateBuilder.CreateTemplateEdit(fieldInfo, dataService, element); } } } return null; }
public void CreateTableFields() { IDataService dataService = ServiceLocator.Current.GetInstance<IDataService>(); foreach (EntityTableInfo tableInfo in this.TableInfos) { foreach (EntityColumnInfo columnInfo in tableInfo.ColumnInfos) { if (columnInfo.ControlType != Attributes.ControlType.None) { if (columnInfo.ForeignKeyNames != null && columnInfo.ForeignKeyNames.Count > 0 && columnInfo.PrimaryKeyName == null) { List<EntityFieldInfo> compositeFields = new List<EntityFieldInfo>(); List<EntityColumnInfo> parentColumnInfos = dataService.GetAllParentUniqueKeyColumnInfos(columnInfo); foreach (EntityColumnInfo parentColumnInfo in parentColumnInfos) { EntityFieldInfo fieldInfo = new EntityFieldInfo(); fieldInfo.ColumnInfo = columnInfo; fieldInfo.ParentColumnInfo = parentColumnInfo; fieldInfo.TableInfo = tableInfo; compositeFields.Add(fieldInfo); fieldInfo.IsMainTableField = false; fieldInfo.ControlType = Attributes.ControlType.Combo; if (columnInfo.AllowNull) { fieldInfo.IsNeeded = false; } else { fieldInfo.IsNeeded = true; } List<EntityTableInfo> tableTree = dataService.TraverseEntityInfoTree(parentColumnInfo.TableInfo, tableInfo); List<String> paths = new List<string>(); foreach (EntityTableInfo parentTable in tableTree) { paths.Add(parentTable.EntityType.Name); } paths.Add(parentColumnInfo.PropertyName); fieldInfo.Path = String.Join(".", paths); } compositeFields.Reverse(); foreach (EntityFieldInfo fieldInfo in compositeFields) { tableInfo.FieldInfos.Add(fieldInfo); columnInfo.FieldInfos.Add(fieldInfo); } } else { EntityFieldInfo fieldInfo = new EntityFieldInfo(); fieldInfo.ColumnInfo = columnInfo; fieldInfo.TableInfo = tableInfo; fieldInfo.IsMainTableField = true; fieldInfo.IsNeeded = !columnInfo.AllowNull; fieldInfo.ControlType = columnInfo.ControlType; tableInfo.FieldInfos.Add(fieldInfo); columnInfo.FieldInfos.Add(fieldInfo); fieldInfo.Path = columnInfo.PropertyName; if (String.IsNullOrEmpty(fieldInfo.Path)) throw new Exception("Field Path Empty"); } } } List<EntityTableInfo> parentTables = dataService.GetAllParentTableInfos(tableInfo); foreach (EntityTableInfo parentTable in parentTables) { foreach (EntityColumnInfo parentTableColumnInfo in parentTable.ColumnInfos) { if (parentTableColumnInfo.ControlType != Attributes.ControlType.None) { if (!(from c in tableInfo.FieldInfos where c.ParentColumnInfo != null && c.ParentColumnInfo.Equals (parentTableColumnInfo) select c).Any()) { EntityFieldInfo fieldInfo = new EntityFieldInfo(); fieldInfo.ParentColumnInfo = parentTableColumnInfo; fieldInfo.TableInfo = tableInfo; fieldInfo.IsMainTableField = false; fieldInfo.IsNeeded = false; fieldInfo.ControlType = parentTableColumnInfo.ControlType; List<EntityTableInfo> tableTree = dataService.TraverseEntityInfoTree(parentTableColumnInfo.TableInfo, tableInfo); List<String> paths = new List<string>(); foreach (EntityTableInfo parentTableInTree in tableTree) { paths.Add(parentTableInTree.EntityType.Name); } paths.Add(parentTableColumnInfo.PropertyName); fieldInfo.Path = String.Join(".", paths); tableInfo.FieldInfos.Add(fieldInfo); } } } } } foreach (EntityTableInfo tableInfo in this.TableInfos) { tableInfo.CreateValidationRules(); // Console.WriteLine("Table " + tableInfo.DisplayName); foreach (EntityFieldInfo fieldInfo in tableInfo.FieldInfos) { //Console.WriteLine("\t Champ " + fieldInfo.Path); fieldInfo.CreateValidationRules(); } } }
public override bool ValidateString(EntityFieldInfo fieldInfo, string valueString, out string message, out object value) { Int64 valueInt32 = 0; Double valueDouble = 0; DateTime valueDateTime = DateTime.Now; if (fieldInfo.ColumnInfo != null && fieldInfo.ParentColumnInfo == null) { EntityColumnInfo columnInfo = fieldInfo.ColumnInfo; if (columnInfo.ControlType == ControlType.Check) { if (valueString == null || valueString.Equals(CultureConfiguration.BooleanNullString) || String.IsNullOrEmpty(valueString)) { if (columnInfo.AllowNull) { value = null; message = null; return true; } else { value = null; message = "valeur " + CultureConfiguration.BooleanNullString + " non autorisée"; return false; } } else { if (valueString.Equals(CultureConfiguration.BooleanTrueString)) { value = true; message = null; return true; } else if (valueString.Equals(CultureConfiguration.BooleanFalseString)) { value = false; message = null; return true; } else { value = null; message = null; return true; } } } else if (columnInfo.ControlType == ControlType.Text) { if (valueString == null) { value = null; message = "valeur vide non autorisé"; return false; } else { if (valueString.Length > columnInfo.MaxCharLength) { value = null; message = "le texte de doit pas dépasser " + columnInfo.MaxCharLength + " caractères"; return false; } else { value = valueString; message = null; return true; } } } else if (columnInfo.ControlType == ControlType.Color) { value = valueString; message = null; return true; } else if (columnInfo.ControlType == ControlType.Integer) { if (String.IsNullOrEmpty(valueString)) { if (columnInfo.AllowNull) { value = null; message = null; return true; } else { value = null; message = "valeur vide non autorisé"; return false; } } else { valueInt32 = Int64.Parse(valueString); if (valueInt32 > columnInfo.MaxNumericValue) { message = "la valeur doit être inférieur à " + columnInfo.MaxNumericValue; value = null; return false; } else if (valueInt32 < columnInfo.MinNumericValue) { message = "la valeur doit être supérieur à " + columnInfo.MaxNumericValue; value = null; return false; } else { value = valueInt32; message = null; return true; } } } else if (columnInfo.ControlType == ControlType.Decimal) { if (String.IsNullOrEmpty(valueString)) { if (columnInfo.AllowNull) { value = null; message = null; return true; } else { value = null; message = "valeur vide non autorisé"; return false; } } else { valueDouble = Double.Parse(valueString.Replace(",", "."), NumberStyles.AllowDecimalPoint, System.Globalization.CultureInfo.InvariantCulture); if (valueDouble > columnInfo.MaxNumericValue) { message = "la valeur doit être inférieur à " + columnInfo.MaxNumericValue; value = null; return false; } else if (valueDouble < columnInfo.MinNumericValue) { message = "la valeur doit être supérieur à " + columnInfo.MaxNumericValue; value = null; return false; } else { value = valueDouble; message = null; return true; } } } else if (columnInfo.ControlType == ControlType.Date) { if (valueString.IndexOf(" ") != -1) { valueString = valueString.Substring(0, valueString.IndexOf(" ")); } if (columnInfo.AllowNull) { Nullable<DateTime> valNullableDateTime = null; if (!Validator.ValidateNullableDateTime(valueString, out message, out valNullableDateTime)) { value = null; message = null; return false; } else { value = valNullableDateTime; message = null; return true; } } else { DateTime valDateTime = DateTime.Now; if (!Validator.ValidateDateTime(valueString, out message, out valDateTime)) { message = valueString + " n'est pas une date au format " + CultureConfiguration.DateFormatString; value = null; return false; } else { value = valDateTime; message = null; return true; } } } else if (columnInfo.ControlType == ControlType.None) { value = valueString; message = null; return true; } else if (columnInfo.ControlType == ControlType.Pr) { Int64 dplt = 10; Int64 num = 0; if (valueString.IndexOf("+") != -1) { String[] prItems = valueString.Split("+".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); if (prItems.Length == 2) { if (!Int64.TryParse(prItems[0].Trim(), out num) || !Int64.TryParse(prItems[1].Trim(), out dplt)) { value = null; message = valueString + " n'est pas un PR au format 12+852"; return false; } else { value = num.ToString() + " +" + dplt.ToString("0000"); message = null; return true; } } else { value = null; message = valueString + " n'est pas un PR au format 12+852"; return false; } } else { if (!Int64.TryParse(valueString.Trim(), out num)) { value = null; message = valueString + " n'est pas un PR au format 12+852"; return false; } else { value = num.ToString() + " +0000"; message = null; return true; } } } } value = null; message = null; return true; }
public abstract bool ValidateString(EntityFieldInfo fieldInfo, string valueString, out string message, out object result);
public static List<Symbology> CreateSymbologies(EntityFieldInfo fieldInfo, StatType statType,Nullable<StatFieldPart> fieldPart) { List<Symbology> symbologies = new List<Symbology>(); Symbology symobology = null; SymbologyRuleEquals rule = null; Symbolizer symbolizer = null; if (statType == StatType.Count) { if (fieldInfo.ControlType == ControlType.Check) { if (fieldInfo.ColumnInfo.AllowNull) { symobology = new Symbology(); rule = new SymbologyRuleEquals(); rule.Field = fieldInfo; rule.Value = null; symobology.DisplayName = "Non renseigné"; symobology.Rule = rule; symbolizer = new Symbolizer(); symobology.Symbolizer = symbolizer; symobology.Symbolizer.BaseColor = Colors.Gray; symbologies.Add(symobology); } symobology = new Symbology(); rule = new SymbologyRuleEquals(); rule.Field = fieldInfo; rule.Value = true; symobology.DisplayName = "Oui"; symobology.Rule = rule; symbolizer = new Symbolizer(); symobology.Symbolizer = symbolizer; symobology.Symbolizer.BaseColor = Colors.Green; symbologies.Add(symobology); symobology = new Symbology(); rule = new SymbologyRuleEquals(); rule.Field = fieldInfo; rule.Value = false; symobology.DisplayName = "Non"; symobology.Rule = rule; symbolizer = new Symbolizer(); symobology.Symbolizer = symbolizer; symobology.Symbolizer.BaseColor = Colors.Red; symbologies.Add(symobology); } else if (fieldInfo.ControlType == ControlType.Date) { if (fieldPart == StatFieldPart.Year) { if (fieldInfo.ColumnInfo.AllowNull) { symobology = new Symbology(); rule = new SymbologyRuleEquals(); rule.Field = fieldInfo; rule.Value = null; symobology.DisplayName = "Non renseigné"; symobology.Rule = rule; symbolizer = new Symbolizer(); symobology.Symbolizer = symbolizer; symobology.Symbolizer.BaseColor = Colors.Gray; symbologies.Add(symobology); } /* List<DateTime> dates = new List<DateTime>(); DbSet dbSet = dataService.GetDbSet(_selectedStatField.Field.ColumnInfo.TableInfo.EntityType); IQueryable queryable = dbSet.AsQueryable(); System.Reflection.PropertyInfo propertyDate = _selectedStatField.Field.ColumnInfo.TableInfo.EntityType.GetProperty(_selectedStatField.Field.Path); foreach (Object obj in queryable) { Object objDate = propertyDate.GetValue(obj); if (objDate != null && objDate is DateTime) { DateTime date = (DateTime)objDate; dates.Add(date); } } if (dates.Count > 0) { int minYear = (from d in dates select d.Year).Min(); int maxYear = (from d in dates select d.Year).Min(); for (int year = minYear; year <= maxYear; year++) { symobology = new Symbology(); rule = new SymbologyRuleEquals(); rule.Field = _selectedStatField.Field; rule.Value = year; symobology.DisplayName = year.ToString(); symobology.Rule = rule; symbolizer = new Symbolizer(); symobology.Symbolizer = symbolizer; symobology.Symbolizer.BaseColor = Colors.Gray; this.Symbologies.Add(symobology); } } * */ //System.Linq.Expressions.ParameterExpression expressionBase = System.Linq.Expressions.Expression.Parameter(_selectedStatField.Field.ColumnInfo.TableInfo.EntityType, "item"); //MemberExpression exp = System.Linq.Expressions.Expression.Property(expressionBase, _selectedStatField.Field.Path); } } else if (fieldInfo.ControlType == ControlType.Combo) { List<Object> distinctValues = new List<object>(); IDataService dataService = ServiceLocator.Current.GetInstance<IDataService>(); DbSet dbSet = dataService.GetDbSet(fieldInfo.ParentColumnInfo.TableInfo.EntityType); IQueryable queryable = dbSet.AsQueryable(); foreach (Object o in queryable) { distinctValues.Add(fieldInfo.ParentColumnInfo.Property.GetValue(o)); } distinctValues = (from o in distinctValues orderby o select o).Distinct().ToList(); if (distinctValues.Count > 200) { } else { if (fieldInfo.ColumnInfo.AllowNull) { symobology = new Symbology(); rule = new SymbologyRuleEquals(); rule.Field = fieldInfo; rule.Value = null; symobology.DisplayName = "Non renseigné"; symobology.Rule = rule; symbolizer = new Symbolizer(); symobology.Symbolizer = symbolizer; symobology.Symbolizer.BaseColor = Colors.Gray; symbologies.Add(symobology); } double hueStep = 360D / distinctValues.Count; double hue = 0D; foreach (Object obj in distinctValues) { Color color = Colors.AliceBlue.FromHsv(hue, 0.8, 0.8); symobology = new Symbology(); rule = new SymbologyRuleEquals(); rule.Field = fieldInfo; rule.Value = obj; symobology.DisplayName = obj.ToString(); symobology.Rule = rule; symbolizer = new Symbolizer(); symobology.Symbolizer = symbolizer; symobology.Symbolizer.BaseColor = color; symbologies.Add(symobology); hue += hueStep; } } } } return symbologies; }
private static DataTemplate CreateTemplateDisplay(EntityFieldInfo fieldInfo, IDataService dataService, FrameworkElement element) { if (fieldInfo.ControlType == ControlType.Color) { DataTemplate dataTemplate = new DataTemplate(); FrameworkElementFactory grid = new FrameworkElementFactory(typeof(Grid)); grid.SetValue(TextBox.MinHeightProperty, 22D); grid.SetValue(TextBox.MinWidthProperty, 64D); Binding binding = CreateBindingOneWay(fieldInfo.Path); binding.Converter = new StringToBrushConverter(); grid.SetBinding(Grid.BackgroundProperty, binding); dataTemplate.VisualTree = grid; return dataTemplate; } else { DataTemplate dataTemplate = new DataTemplate(); FrameworkElementFactory textBox = new FrameworkElementFactory(typeof(TextBox)); textBox.SetValue(TextBox.MinHeightProperty, 22D); textBox.SetBinding(TextBox.TextProperty, CreateBindingOneWay(fieldInfo.Path)); textBox.SetValue(TextBox.IsReadOnlyProperty, true); dataTemplate.VisualTree = textBox; if (fieldInfo.IsMainTableField == false && fieldInfo.IsNeeded == false) {textBox.SetValue(TextBox.BackgroundProperty, Brushes.LightGray);} return dataTemplate; } }