// ******************************************************************* // common code for Column Auto-generation // i.e. creation of combo columns (we show the same data in all the grids) // ******************************************************************* public static void HandleColumnAutoGeneration(DataGridAutoGeneratingColumnEventArgs e) { if (new string[] { "Color", "ID", "ProductSubcategoryID", "Description", "GifImage" }.Contains(e.Property.Name)) { e.Cancel = true; return; } if (e.Property.Name == "ProductModelID") { var comboCol = new DataGridComboBoxColumn(e.Property); var models = Data.GetModels().OrderBy(m => m.Name).ToList(); models.Insert(0, new Model { Name = "Not specified", ProductModelID = 0 }); comboCol.ItemsSource = models; comboCol.DisplayMemberPath = "Name"; comboCol.SelectedValuePath = "ProductModelID"; comboCol.Header = "Model"; e.Column = comboCol; } if (e.Property.Name == "ImageUrl") { //CLR40 string imgPath = "/" + new AssemblyName(Assembly.GetExecutingAssembly().FullName).Name + ";component/Resources/"; var imageColumn = new DataGridImageColumn(e.Property); imageColumn.SortMemberPath = "ImageUrl"; imageColumn.Binding.Converter = new ImageSourceConverter(); imageColumn.Binding.ConverterParameter = imgPath; imageColumn.Width = new DataGridLength(85); imageColumn.GroupContentConverter = new ImageSourceConverter(); imageColumn.Format = imgPath; imageColumn.Header = "Image"; e.Column = imageColumn; } if (e.Property.Name == "ExpirationDate") { //(e.Column as DataGridDateColumn).SelectedDateFormat = C1DatePickerFormat.Custom; e.Column.GroupConverter = new OutlookDateGroupConverter(); e.Column.GroupContentConverter = new OutlookDateGroupNameConverter(); e.Column.Header = "Expiration Date"; } if (e.Property.Name == "Name") { IValueConverter converter = new AlphabeticTextGroupConverter(); e.Column.GroupConverter = converter; } if (e.Property.Name == "ProductNumber") { IValueConverter converter = new ProductGroupConverter(); e.Column.GroupConverter = converter; e.Column.GroupContentConverter = converter; e.Column.Header = "Product Number"; (e.Column as DataGridTextColumn).MaxLength = 10; } if (e.Property.Name == "StandardCost" && e.Column is C1.WPF.DataGrid.DataGridBoundColumn) { e.Column.GroupConverter = new NumberRangeGroupConverter(); e.Column.GroupContentConverter = new NumberRangeGroupNameConverter(); e.Column.Header = "Standard Cost"; ((C1.WPF.DataGrid.DataGridBoundColumn)e.Column).Format = "C"; } }
private void dgEventSponsor_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { string headerName = e.Column.Header.ToString(); if (headerName == "EventID") { e.Column.Header = "Event ID"; } else if (headerName == "SponsorID") { e.Column.Header = "Sponsor ID"; } }
/// <summary> /// Makes selected recipesDataGrid columns visible during auto column generation /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void RecipesDataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { switch (e.Column.Header.ToString()) { case "recipeName": e.Column.Visibility = Visibility.Visible; break; default: e.Column.Visibility = Visibility.Hidden; break; } }
private void ResultsDataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { if (!ViewModel.SplittedSelect.Any()) { return; } e.Cancel = !e.PropertyName.In(ViewModel.SplittedSelect); if (!e.Cancel) { e.Column.Width = new DataGridLength(1, DataGridLengthUnitType.Star); } }
private void Items_OnAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { foreach (var propertyName in typeof(PropertyChangedBase) .GetProperties() .Select(p => p.Name)) { if (string.Equals(e.PropertyName, propertyName, StringComparison.OrdinalIgnoreCase)) { e.Cancel = true; break; } } }
private void DataGridExt_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { if (e.PropertyName == "SoKy" || e.PropertyName == "SoLuong") { DataGridTextColumn column = e.Column as DataGridTextColumn; Binding binding = column.Binding as Binding; binding.StringFormat = "N0"; } else if (e.PropertyName == "Details" || e.PropertyName == "DictionaryDetails") { e.Cancel = true; } }
private void DgFormPosition_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { switch (e.Column.Header) { case ("EmployeesPosition"): e.Column.Header = "Должность подчинённого"; break; case ("Salary"): e.Column.Header = "Оклад"; break; } }
private void AutoGenerate(object sender, DataGridAutoGeneratingColumnEventArgs e) { string col = (string)e.Column.Header; if ((col == "idCustomer")) { e.Column.IsReadOnly = true; } if (col == "appointments") { e.Cancel = true; } }
//Переименовка столбцов в компоненте Data Grid private void dgRole_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { switch (e.Column.Header) { case ("Name_of_Role"): e.Column.Header = "Название роли"; break; case ("Access_of_Role"): e.Column.Header = "Доступ роли"; break; } }
private void OnAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { if (e.PropertyType == typeof(DateTime?)) { (e.Column as DataGridTextColumn).Binding.StringFormat = "dd/MM/yyyy"; e.Column.CanUserSort = true; } if (e.Column.Header.ToString() == "Id") { e.Column.MinWidth = 0; e.Column.Width = 0; } }
private void DgFormBase_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { switch (e.Column.Header) { case ("BaseAddress"): e.Column.Header = "Адрес базы"; break; case ("ProvidesServices"): e.Column.Header = "Услуги предоставляет"; break; } }
private void dgDolgnost_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { switch (e.Column.Header) { case ("Name_Doljnost"): e.Column.Header = "Название должности"; break; case ("Oklad"): e.Column.Header = "Оклад"; break; } }
private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { //hiding id columns if (e.Column.Header.ToString() == "RecipeID" || e.Column.Header.ToString() == "UserDataID" || e.Column.Header.ToString() == "DateCreated" || e.Column.Header.ToString() == "tblUserData" || e.Column.Header.ToString() == "tblIngredients" || e.Column.Header.ToString() == "tblShoppingLists") { e.Column.Visibility = Visibility.Collapsed; } }
private void DgFormService_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { switch (e.Column.Header) { case ("HiringContractEmployees"): e.Column.Header = "Найм служащих по контракту"; break; case ("Available"): e.Column.Header = "Доступно"; break; } }
//Переименовка столбцов в датагрид private void DgUslugi_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { switch (e.Column.Header) { case ("Name_Of_Usluga"): e.Column.Header = "Название услуги"; break; case ("Price_Usluga"): e.Column.Header = "Цена услуги"; break; } }
void grid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { var pos = e.PropertyName.IndexOf("_", StringComparison.Ordinal); if (pos > 0 && e.Column.Header != null) { e.Column.Header = e.Column.Header.ToString().Replace("_", "__"); } if (_showNullValuesAsNull) { ((DataGridBoundColumn)e.Column).Binding.TargetNullValue = "NULL"; } }
//Переименовка столбцов у компонента Data Grid private void dgPosition_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { switch (e.Column.Header) { case ("Name_of_Position"): e.Column.Header = "Название должности"; break; case ("Salaty_of_Position"): e.Column.Header = "Оклад"; break; } }
private void MainGrid_OnAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { var displayName = GetPropertyDisplayName(e.PropertyDescriptor); if (!string.IsNullOrEmpty(displayName) && displayName != "none") { e.Column.Header = displayName; } else { e.Cancel = true; } }
private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { var vm = this.DataContext as DataSetViewModel; if (vm != null) { if (vm.ColumnHasRelationshipAttached(e.PropertyName)) { dynamic col = e.Column; col.FontWeight = FontWeights.Bold; } } }
private void tableSetingGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { switch (e.PropertyName) { case nameof(ColumnSetting.Width): case nameof(ColumnSetting.IsTabStop): case nameof(ColumnSetting.IsReadOnly): break; case nameof(ColumnSetting.ColumnName): e.Column.IsReadOnly = true; break; case nameof(ColumnSetting.DataGridColumnType): { var column = new DataGridComboBoxColumnExt(); column.Header = nameof(ColumnSetting.DataGridColumnType); column.SelectedItemBinding = new Binding(nameof(ColumnSetting.DataGridColumnType)); BindingOperations.SetBinding(column, ComboBox.ItemsSourceProperty, new Binding(nameof(ColumnSetting.DataGridColumnTypeList))); e.Column = column; } break; case nameof(ColumnSetting.Order): { var table = (sender as DataGrid).DataContext as TableSetting; var column = new DataGridComboBoxColumnExt(); column.Header = nameof(ColumnSetting.Order); column.SelectedItemBinding = new Binding(nameof(ColumnSetting.Order)); column.ItemsSource = Enumerable.Range(0, table.ColumnSettings.Count).ToList(); e.Column = column; } break; case nameof(ColumnSetting.OrderBy): { var column = new DataGridComboBoxColumnExt(); column.Header = nameof(ColumnSetting.OrderBy); column.DisplayMemberPath = "Key"; column.SelectedValuePath = "Value"; column.SelectedValueBinding = new Binding(nameof(ColumnSetting.OrderBy)); column.ItemsSource = orderByOptions; e.Column = column; } break; default: e.Cancel = true; break; } }
/// <summary> /// Jared Greenfield /// Created: 2019/01/24 /// /// Alters the appearance of the grid to only include useful information for someone looking to add specific ingredients. /// </summary> private void DgItemList_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { switch (e.Column.Header.ToString()) { case "ItemID": e.Column.Visibility = Visibility.Collapsed; break; case "ItemTypeID": e.Column.Width = new DataGridLength(1, DataGridLengthUnitType.Star); e.Column.Header = "Item Type"; break; case "Name": e.Column.DisplayIndex = 0; e.Column.Width = new DataGridLength(1, DataGridLengthUnitType.Star); break; case "Description": e.Column.Visibility = Visibility.Collapsed; break; case "DateActive": e.Column.Visibility = Visibility.Collapsed; break; case "Active": e.Column.Visibility = Visibility.Collapsed; break; case "OnHandQty": e.Column.Visibility = Visibility.Collapsed; break; case "ReorderQty": e.Column.Visibility = Visibility.Collapsed; break; case "OfferingID": e.Column.Visibility = Visibility.Collapsed; break; case "CustomerPurchasable": e.Column.Visibility = Visibility.Collapsed; break; case "RecipeID": e.Column.Visibility = Visibility.Collapsed; break; } }
private void mainDataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { string headername = e.Column.Header.ToString(); //Cancel the column you don't want to generate if (headername == "Id" || headername == "AcademyPhones" || headername == "Students" || headername == "Academy" || headername == "Student" || headername == "Lecturers" || headername == "Leader" || headername == "Gender" || headername == "Group" || headername == "Address" || headername == "Grades" || headername == "Specialty" || headername == "StudentGrade" || headername == "StudentGradeId" || headername == "Groups") { e.Cancel = true; } if (headername == "AcademyId") { e.Column.Header = "Academy"; } else if (headername == "AcademyCity") { e.Column.Header = "Academy City"; } else if (headername == "AcademyStreet") { e.Column.Header = "Academy Street"; } else if (headername == "AcademyHouse") { e.Column.Header = "Academy House"; } else if (headername == "GroupId") { e.Column.Header = "Group"; } else if (headername == "GenderId") { e.Column.Header = "Gender"; } else if (headername == "AddressId") { e.Column.Header = "Address"; } else if (headername == "SpecialtyId") { e.Column.Header = "Specialty"; } else if (headername == "StudentId") { e.Column.Header = "Student"; } }
//Datagrid İşlemler private void dgAccountListeleme_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { if (e.Column.Header.ToString() == "Id") { e.Column.Header = "Hesap NO"; } if (e.Column.Header.ToString() == "AccountOwnerId") { e.Column.Header = "Müşteri No"; } if (e.Column.Header.ToString() == "Suffix") { e.Column.Header = "Ek No"; } if (e.Column.Header.ToString() == "FECId") { e.Column.Header = "Döviz Kodu"; } if (e.Column.Header.ToString() == "BranchId") { e.Column.Header = "Şube Kodu"; } if (e.Column.Header.ToString() == "OpenDate") { e.Column.Header = "Açılış Tarihi"; } if (e.Column.Header.ToString() == "CloseDate") { e.Column.Header = "Kapanış Tarihi"; } if (e.Column.Header.ToString() == "ReasonForClosing") { e.Column.Header = "Kapanış Nedeni"; } if (e.Column.Header.ToString() == "AccountName") { e.Column.Header = "Hesap Adı"; } if (e.Column.Header.ToString() == "AccountDescription") { e.Column.Header = "Hesap Açıklaması"; } if (e.Column.Header.ToString() == "SystemDate") { e.Column.Header = "Sistem Tarihi"; } if (e.Column.Header.ToString() == "Username") { e.Column.Header = "İşlem Yapan"; } }
private void OnFileDescGridAutoGenerateColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { if (e.PropertyType.IsEnum) { e.Column = new DataGridTextColumn { Header = e.Column.Header, Binding = new Binding(e.PropertyName) { Converter = enumConverter } }; } }
private void DataGrid_FailureMode_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { if (e.PropertyName == "是否产生影响") { DataGridComboBoxColumn tmpComboBoxColumn = new DataGridComboBoxColumn(); tmpComboBoxColumn.Header = "是否产生影响"; ObservableCollection <ComboBoxItem> lstComboboxItem = new ObservableCollection <ComboBoxItem>(); lstComboboxItem.Add(new ComboBoxItem() { Item = "是" }); lstComboboxItem.Add(new ComboBoxItem() { Item = "否" }); tmpComboBoxColumn.ItemsSource = lstComboboxItem; //设置下拉框内容的数据源 tmpComboBoxColumn.DisplayMemberPath = "Item"; //界面初始化时展示的值 tmpComboBoxColumn.SelectedValuePath = "Item"; //选中后展示的值 Binding binding = new Binding(); //实例化一个binding对象 binding.Path = new PropertyPath("是否产生影响"); //设置需要绑定到的那一列的列名 binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; tmpComboBoxColumn.SelectedValueBinding = binding; e.Column = tmpComboBoxColumn; } else if (e.PropertyName == "维修方式") { DataGridComboBoxColumn tmpComboBoxColumn = new DataGridComboBoxColumn(); tmpComboBoxColumn.Header = "维修方式"; ObservableCollection <ComboBoxItem> lstComboboxItem = new ObservableCollection <ComboBoxItem>(); lstComboboxItem.Add(new ComboBoxItem() { Item = "直接维修" }); lstComboboxItem.Add(new ComboBoxItem() { Item = "更换维修" }); tmpComboBoxColumn.ItemsSource = lstComboboxItem; //设置下拉框内容的数据源 tmpComboBoxColumn.DisplayMemberPath = "Item"; //界面初始化时展示的值 tmpComboBoxColumn.SelectedValuePath = "Item"; //选中后展示的值 Binding binding = new Binding(); //实例化一个binding对象 binding.Path = new PropertyPath("维修方式"); //设置需要绑定到的那一列的列名 binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; tmpComboBoxColumn.SelectedValueBinding = binding; e.Column = tmpComboBoxColumn; } else { } }
private void ResultsAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { if ((e.PropertyName.Contains(".") || e.PropertyName.Contains("/") || e.PropertyName.Contains("(") || e.PropertyName.Contains(")") || e.PropertyName.Contains("[") || e.PropertyName.Contains("]") ) && e.Column is DataGridBoundColumn) { DataGridBoundColumn dataGridBoundColumn = e.Column as DataGridBoundColumn; dataGridBoundColumn.Binding = new Binding("[" + e.PropertyName + "]"); } }
private void gridHistory_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { try { if (e.PropertyType == typeof(System.DateTime)) { (e.Column as DataGridTextColumn).Binding.StringFormat = "dd/MM/yyyy HH:mm:ss"; } } catch { ///TODO: to be implemented } }
private void listView_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { if (e.PropertyType == typeof(System.DateTime)) { Style styleCenter = new Style(typeof(System.Windows.Controls.DataGridCell)); //styleCenter.Setters.Add(new Setter(HorizontalAlignmentProperty, HorizontalConte)); //styleCenter.Setters.Add(new Setter(FontWeightProperty, FontWeights.Bold)); //styleCenter.Setters.Add(new Setter(ForegroundProperty, Brushes.Red)); (e.Column as DataGridTextColumn).Binding.StringFormat = "dd/MM/yyyy H:mm:ss"; (e.Column as DataGridTextColumn).CellStyle = styleCenter; } }
private void DriversGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { if (e.Column.Header.ToString() == "Address") { e.Column.Header = "Адрес загрузки"; e.Column.Width = new DataGridLength(1, DataGridLengthUnitType.Star); } if (e.Column.Header.ToString() == "Name") { e.Column.Header = "Имя"; e.Column.Width = new DataGridLength(1, DataGridLengthUnitType.Star); } }
private void dgvManualPledgeUnpledge_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { switch (e.PropertyName) { case "SharesYouWantToUnpledge": e.Column.IsReadOnly = false; break; case "SharesYouWantToPledge": e.Column.IsReadOnly = false; break; default: e.Column.IsReadOnly = true; break; } }
private void dataGrid1_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { var desc = e.PropertyDescriptor as PropertyDescriptor; var att = desc.Attributes[typeof(ColumnNameAttribute)] as ColumnNameAttribute; if (att != null) { e.Column.Header = att.Name; if (att.Name == "شناسه") { e.Column.IsReadOnly = true; } } }
private void grid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { if (e.Property.Name == "Photo") { var imageCol = new DataGridImageColumn(e.Property); imageCol.CanUserMove = false; imageCol.Header = ""; imageCol.Binding.Converter = new ImageSourceConverter(); imageCol.Binding.ConverterParameter = "/" + new AssemblyName(Assembly.GetExecutingAssembly().FullName).Name + ";component/Resources/tennis/"; e.Column = imageCol; } if (e.Property.Name == "Birthday" && e.Column is DataGridBoundColumn) { ((DataGridBoundColumn)e.Column).Format = "d"; } if (e.Property.Name == "Website") { var hyperCol = new DataGridHyperlinkColumn(e.Property); //hyperCol.CellContentStyle = Resources["HyperlinkColumnStyle"] as Style; e.Column = hyperCol; } }
private void gridProducts_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { Common.HandleColumnAutoGeneration(e); }
/// <summary> /// Creates a DataGridColumn that works with DataTime /// </summary> private void DateTimeColumn(DataGridAutoGeneratingColumnEventArgs e) { string DatePickerStart = GetDatePickerStart(); string DatePickerEnd = GetDatePickerEnd(); #if !SILVERLIGHT string RangeDomainValidationXAML = string.Empty; if (featureLayer != null) { Field field = featureLayer.LayerInfo.Fields.FirstOrDefault(x => x.Name == GetMappedKey(e)); RangeDomainValidationXAML = GetRangeDomainValidation(field); } #endif DataGridTemplateColumn templateColumn = new DataGridTemplateColumn(); // Creating CellTemplate: System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append("<DataTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" "); sb.Append("xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" "); sb.Append("xmlns:local=\"clr-namespace:ESRI.ArcGIS.Client.Toolkit.Utilities;assembly=ESRI.ArcGIS.Client.Toolkit\">"); sb.Append("<Grid>"); sb.Append("<Grid.Resources>"); sb.Append("<local:DateTimeConverter x:Key=\"dateTimeConverter\" />"); sb.Append("</Grid.Resources>"); string propName = GetBindingPropertyName(e.PropertyName); sb.AppendFormat("<TextBlock Text=\"{{Binding {0}, Converter={{StaticResource dateTimeConverter}}}}\" VerticalAlignment=\"Center\" Margin=\"3\" />", propName); sb.Append("</Grid>"); sb.Append("</DataTemplate>"); #if SILVERLIGHT templateColumn.CellTemplate = (DataTemplate)System.Windows.Markup.XamlReader.Load(sb.ToString()); #else System.IO.MemoryStream templateStream = new System.IO.MemoryStream(System.Text.UTF8Encoding.Default.GetBytes(sb.ToString())); templateColumn.CellTemplate = System.Windows.Markup.XamlReader.Load(templateStream) as DataTemplate; #endif // Creating CellEditingTemplate: sb = new System.Text.StringBuilder(); sb.Append("<DataTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" "); sb.Append("xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" "); sb.Append("xmlns:local=\"clr-namespace:ESRI.ArcGIS.Client.Toolkit;assembly=ESRI.ArcGIS.Client.Toolkit\" "); #if SILVERLIGHT sb.Append("xmlns:datePicker=\"clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls\" >"); #else #if NET35 sb.Append("xmlns:datePicker=\"http://schemas.microsoft.com/wpf/2008/toolkit\" >"); #else sb.Append(">"); #endif #endif //sb.AppendFormat("DatePicker SelectedDate=\"{{Binding {0}, Mode=TwoWay}}\" IsDropDownOpen=\"False\" />", propName); sb.AppendFormat("{0}DatePicker IsDropDownOpen=\"False\" >",DatePickerStart); sb.AppendFormat("{0}DatePicker.SelectedDate>", DatePickerStart); sb.AppendFormat("<Binding Path=\"{0}\" Mode=\"TwoWay\" >", propName); #if !SILVERLIGHT sb.Append("<Binding.ValidationRules>"); if (!string.IsNullOrEmpty(RangeDomainValidationXAML)) sb.Append(RangeDomainValidationXAML); sb.Append("</Binding.ValidationRules>"); #endif sb.Append("</Binding>"); sb.AppendFormat("{0}DatePicker.SelectedDate>", DatePickerEnd); sb.AppendFormat("{0}DatePicker>", DatePickerEnd); sb.Append("</DataTemplate>"); #if SILVERLIGHT templateColumn.CellEditingTemplate = (DataTemplate)System.Windows.Markup.XamlReader.Load(sb.ToString()); #else templateStream = new System.IO.MemoryStream(System.Text.UTF8Encoding.Default.GetBytes(sb.ToString())); templateColumn.CellEditingTemplate = System.Windows.Markup.XamlReader.Load(templateStream) as DataTemplate; #endif e.Column = templateColumn; }
/// <summary> /// Raises the <see cref="E:System.Windows.Controls.DataGrid.AutoGeneratingColumn"/> event. /// </summary> /// <param name="e">The event data.</param> protected override void OnAutoGeneratingColumn(DataGridAutoGeneratingColumnEventArgs e) { base.AutoGenerateColumns = true; base.OnAutoGeneratingColumn(e); string mappedKey = GetMappedKey(e); if (featureLayer != null && featureLayer.LayerInfo != null) { // Don't show object id field. if (featureLayer.LayerInfo.ObjectIdField == mappedKey) { e.Cancel = true; return; } // Only create columns for out fields. Tasks.OutFields outFields = featureLayer.OutFields; if (outFields == null || (!outFields.Contains("*") && !outFields.Contains(mappedKey))) { e.Cancel = true; return; } // Find field info for the current column Field field = featureLayer.LayerInfo.Fields.FirstOrDefault(x => x.Name == mappedKey); if (outFields.Contains("*")) { if(field == null) { e.Cancel = true; return; } } if (field != null) { if (FieldDomainUtils.IsDynamicDomain(field, featureLayer.LayerInfo)) { // dynamic coded value domains DynamicCodedValueColumn(e); } else if (field.Name == featureLayer.LayerInfo.TypeIdField) { // type id field TypeIDColumn(e); } else if (field.Domain is CodedValueDomain) { // coded value domains CodedValueColumn(e); } else if (field.Type == Field.FieldType.Date) { // date time fields DateTimeColumn(e); } #if !SILVERLIGHT else if(field.Type == Field.FieldType.GUID) { TextColumn(e, DataType.GUID); } else { // all others TextColumn(e, DataType.Object); } #else else if(field.Type == Field.FieldType.GUID) { GuidColumn(e); } #endif // Attached Field info to the column for easy reference e.Column.SetValue(FieldColumnProperty, field); #if SILVERLIGHT SetFieldAliasMapping(e.Column, e.PropertyName, field.Alias); #endif } }
/// <summary> /// Creates a DataGridColumn that works with CodedValue Domain types of a FeatureLayer. /// </summary> private void CodedValueColumn(DataGridAutoGeneratingColumnEventArgs e) { Field field = featureLayer.LayerInfo.Fields.FirstOrDefault(x => x.Name == GetMappedKey(e)); CodedValueDomainColumn column = new CodedValueDomainColumn(); column.CodedValueSources = FieldDomainUtils.BuildCodedValueSource(field); column.Field = e.PropertyName; e.Column = column; }
/// <summary> /// Creates a DataGridColumn that uses a TexBlock for Display and Editing. /// </summary> private void TextColumn(DataGridAutoGeneratingColumnEventArgs e) { string maxLength = ""; bool Nullable = true; string FieldType = "{x:Null}"; string RangeDomainValidationXAML = string.Empty; if (featureLayer != null) { Field field = featureLayer.LayerInfo.Fields.FirstOrDefault(x => x.Name == GetMappedKey(e)); maxLength = field.Length > 0 ? "MaxLength=\"" + field.Length.ToString() + "\"" : ""; Nullable = field.Nullable; FieldType = field.Type.ToString(); RangeDomainValidationXAML = GetRangeDomainValidation(field); } DataGridTemplateColumn templateColumn = new DataGridTemplateColumn(); // Creating CellTemplate: string propName = GetBindingPropertyName(e.PropertyName); string xaml; const string cellTemplate = @"<DataTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml""> <TextBlock VerticalAlignment=""Center"" Margin=""3""> <TextBlock.Text> <Binding Path=""{0}"" Mode=""OneWay""/> </TextBlock.Text> </TextBlock> </DataTemplate>"; xaml = string.Format(cellTemplate, propName); templateColumn.CellTemplate = (DataTemplate)LoadXaml(xaml); const string editingTemplate = @"<DataTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:local=""clr-namespace:ESRI.ArcGIS.Client.Toolkit;assembly=ESRI.ArcGIS.Client.Toolkit"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml""> <Grid> <Grid.Resources> <local:StringToPrimitiveTypeConverter x:Key=""converter"" FieldType=""{0}"" /> </Grid.Resources> <TextBox {1} > <TextBox.Text> <Binding Path=""{2}"" Mode=""TwoWay"" Converter=""{{StaticResource converter}}"" > <Binding.ValidationRules> <local:FeatureValidationRule ValidationStep=""ConvertedProposedValue"" FieldType=""{0}"" Nullable=""{3}"" /> {4} </Binding.ValidationRules> </Binding> </TextBox.Text> <TextBox.Style> <Style TargetType=""{{x:Type TextBox}}""> <Style.Triggers> <Trigger Property=""Validation.HasError"" Value=""true""> <Setter Property=""ToolTip"" Value=""{{Binding RelativeSource={{RelativeSource Self}}, Path=(Validation.Errors)[0].ErrorContent}}"" /> </Trigger> </Style.Triggers> </Style> </TextBox.Style> </TextBox> </Grid> </DataTemplate>"; xaml = string.Format(editingTemplate, FieldType, maxLength, propName, Nullable, RangeDomainValidationXAML); templateColumn.CellEditingTemplate = (DataTemplate)LoadXaml(xaml); CopyColumnProperties(templateColumn, e.Column); e.Column = templateColumn; }
private void dataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { this._autoGeneratedCount++; }
/// <summary> /// Used to get the property name /// </summary> private string GetMappedKey(DataGridAutoGeneratingColumnEventArgs e) { #if SILVERLIGHT return e.PropertyName.MappedKey(); // reflection safe property name. #else return e.PropertyName; #endif }
/// <summary> /// The polymorphic method which raises the AutoGeneratingColumn event /// </summary> /// <param name="e"></param> protected virtual void OnAutoGeneratingColumn(DataGridAutoGeneratingColumnEventArgs e) { if (AutoGeneratingColumn != null) { AutoGeneratingColumn(this, e); } }
/// <summary> /// Helper method which generates columns for a given IItemProperties and adds /// them either to a datagrid or to a collection of columns as specified by the flag. /// </summary> /// <param name="dataGrid"></param> /// <param name="iItemProperties"></param> /// <param name="columnCollection"></param> private static void GenerateColumns( IItemProperties iItemProperties, DataGrid dataGrid, Collection<DataGridColumn> columnCollection) { Debug.Assert(iItemProperties != null, "iItemProperties should not be null"); Debug.Assert(dataGrid != null || columnCollection != null, "Both dataGrid and columnCollection cannot not be null at the same time"); ReadOnlyCollection<ItemPropertyInfo> itemProperties = iItemProperties.ItemProperties; if (itemProperties != null && itemProperties.Count > 0) { foreach (ItemPropertyInfo itemProperty in itemProperties) { DataGridColumn dataGridColumn = DataGridColumn.CreateDefaultColumn(itemProperty); if (dataGrid != null) { // AutoGeneratingColumn event is raised before generating and adding column to datagrid // and the column returned by the event handler is used instead of the original column. DataGridAutoGeneratingColumnEventArgs eventArgs = new DataGridAutoGeneratingColumnEventArgs(dataGridColumn, itemProperty); dataGrid.OnAutoGeneratingColumn(eventArgs); if (!eventArgs.Cancel && eventArgs.Column != null) { eventArgs.Column.IsAutoGenerated = true; dataGrid.Columns.Add(eventArgs.Column); } } else { columnCollection.Add(dataGridColumn); } } } }
/// <summary> /// Raises the AutoGeneratingColumn event. /// </summary> protected virtual void OnAutoGeneratingColumn(DataGridAutoGeneratingColumnEventArgs e) { EventHandler<DataGridAutoGeneratingColumnEventArgs> handler = this.AutoGeneratingColumn; if (handler != null) { handler(this, e); } }
/// <summary> /// Creates a DataGridColumn that works with DataTime /// </summary> private void DateTimeColumn(DataGridAutoGeneratingColumnEventArgs e) { DateTimePickerColumn column = new DateTimePickerColumn(); if (featureLayer != null && featureLayer.LayerInfo != null && featureLayer.LayerInfo.Fields != null) { Field field = featureLayer.LayerInfo.Fields.FirstOrDefault(x => x.Name == GetMappedKey(e)); column.DateTimeKind = this.DateTimeKind; column.DateTimeFormat = this.DateTimeFormat; column.Header = field.Alias; column.Field = e.PropertyName; #if !SILVERLIGHT // information is used for validation rules for WPF data binding. column.FieldInfo = field; #endif CopyColumnProperties(column, e.Column); e.Column = column; } }
/// <summary> /// Creates a DataGridColumn that works with Dynamic Coded Value Domains /// (aka Sub Domains) types of a FeatureLayer. /// </summary> private void DynamicCodedValueColumn(DataGridAutoGeneratingColumnEventArgs e) { Field field = featureLayer.LayerInfo.Fields.FirstOrDefault(x => x.Name == GetMappedKey(e)); DynamicCodedValueSource dynamicCodedValueSource = FieldDomainUtils.BuildDynamicCodedValueSource(field, featureLayer.LayerInfo); DynamicCodedValueDomainColumn column = new DynamicCodedValueDomainColumn(); column.DynamicCodedValueSource = dynamicCodedValueSource; column.LookupField = featureLayer.LayerInfo.TypeIdField; column.FieldInfo = field; column.Field = e.PropertyName; e.Column = column; }
private bool GenerateColumn(Type type, string memberBinding, string memberName, string header, PropertyInfo propertyInfo) { // Create a new DataBoundColumn for the Property DataGridBoundColumnBase newColumn = GetDataGridColumnFromType(type); newColumn.DisplayMemberBinding = new Binding(memberBinding); newColumn.DisplayMemberPath = memberName; newColumn.Header = header; // Raise the AutoGeneratingColumn event in case the user wants to Cancel or Replace the // column being generated DataGridAutoGeneratingColumnEventArgs e = new DataGridAutoGeneratingColumnEventArgs(propertyInfo, newColumn); OnAutoGeneratingColumn(e); if (e.Cancel) { return false; } else { newColumn = e.Column; } this.ColumnsInternal.Add(newColumn); return true; }
/// <summary> /// Creates a DataGridColumn that uses a TexBlock for Display and Editing. /// </summary> private void TextColumn(DataGridAutoGeneratingColumnEventArgs e) { string maxLength = ""; bool Nullable = true; string FieldType = "{x:Null}"; string RangeDomainValidationXAML = string.Empty; if (featureLayer != null) { Field field = featureLayer.LayerInfo.Fields.FirstOrDefault(x => x.Name == GetMappedKey(e)); maxLength = field.Length > 0 ? "MaxLength=\"" + field.Length.ToString() + "\"" : ""; Nullable = field.Nullable; FieldType = field.Type.ToString(); RangeDomainValidationXAML = GetRangeDomainValidation(field); } DataGridTemplateColumn templateColumn = new DataGridTemplateColumn(); // Creating CellTemplate: System.Text.StringBuilder sb = new System.Text.StringBuilder(); string propName = GetBindingPropertyName(e.PropertyName); sb.Append("<DataTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" "); sb.Append("xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">"); sb.AppendFormat("<TextBlock Text=\"{{Binding {0}}}\" VerticalAlignment=\"Center\" Margin=\"3\" />", propName); sb.Append("</DataTemplate>"); System.IO.MemoryStream templateStream = new System.IO.MemoryStream(System.Text.UTF8Encoding.Default.GetBytes(sb.ToString())); templateColumn.CellTemplate = System.Windows.Markup.XamlReader.Load(templateStream) as DataTemplate; // Creating CellEditingTemplate: sb = new System.Text.StringBuilder(); sb.Append("<DataTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" "); sb.Append("xmlns:local=\"clr-namespace:ESRI.ArcGIS.Client.Toolkit;assembly=ESRI.ArcGIS.Client.Toolkit\" "); sb.Append("xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">"); sb.Append("<Grid>"); sb.Append("<Grid.Resources>"); sb.AppendFormat("<local:StringToPrimitiveTypeConverter x:Key=\"converter\" FieldType=\"{0}\" />", FieldType); sb.Append("</Grid.Resources>"); sb.AppendFormat("<TextBox {0} >",maxLength); sb.Append("<TextBox.Text>"); sb.AppendFormat("<Binding Path=\"{0}\" Mode=\"TwoWay\" Converter=\"{{StaticResource converter}}\" >", propName); sb.Append("<Binding.ValidationRules>"); sb.AppendFormat("<local:FeatureValidationRule ValidationStep=\"ConvertedProposedValue\" FieldType=\"{0}\" Nullable=\"{1}\" />", FieldType, Nullable); if (!string.IsNullOrEmpty(RangeDomainValidationXAML)) sb.Append(RangeDomainValidationXAML); sb.Append("</Binding.ValidationRules>"); sb.Append("</Binding>"); sb.Append("</TextBox.Text>"); sb.Append("</TextBox>"); sb.Append("</Grid>"); sb.Append("</DataTemplate>"); templateStream = new System.IO.MemoryStream(System.Text.UTF8Encoding.Default.GetBytes(sb.ToString())); templateColumn.CellEditingTemplate = System.Windows.Markup.XamlReader.Load(templateStream) as DataTemplate; e.Column = templateColumn; return; }