Exemple #1
0
 // *******************************************************************
 // 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;
         }
     }
 }
Exemple #6
0
 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;
     }
 }
Exemple #7
0
        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;
            }
        }
Exemple #9
0
        //Переименовка столбцов в компоненте 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;
            }
        }
Exemple #10
0
 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;
     }
 }
Exemple #11
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;
            }
        }
Exemple #12
0
        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;
     }
 }
Exemple #14
0
        private void DgFormService_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
            switch (e.Column.Header)
            {
            case ("HiringContractEmployees"):
                e.Column.Header = "Найм служащих по контракту";
                break;

            case ("Available"):
                e.Column.Header = "Доступно";
                break;
            }
        }
Exemple #15
0
        //Переименовка столбцов в датагрид
        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";
            }
        }
Exemple #17
0
        //Переименовка столбцов у компонента 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;
            }
        }
Exemple #18
0
        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;
            }
        }
Exemple #19
0
        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;
                }
            }
        }
Exemple #20
0
        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;
            }
        }
Exemple #29
0
        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;
            }
        }
Exemple #31
0
        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);
                    }
                }
            }
        }
Exemple #42
0
 /// <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;
		}
Exemple #45
0
        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;
		}