private Telerik.Windows.Controls.GridViewColumnCollection CreateColumns() { int columnCount = 1000; int rowCount = 1000000; Items = new ObservableCollection<MyObject>(from i in Enumerable.Range(0, rowCount) select new MyObject(i)); MyConverter converter = new MyConverter(); Telerik.Windows.Controls.GridViewColumnCollection columns = new Telerik.Windows.Controls.GridViewColumnCollection(); for (int i = 0; i < columnCount; i++) { GridViewDataColumn column = new GridViewDataColumn(); column.Header = string.Format("Column {0}", i); column.IsReadOnly = true; column.ShowFieldFilters = false; column.Width = 150; Binding binding = new Binding("ID"); binding.Converter = converter; binding.ConverterParameter = i; column.DataMemberBinding = binding; columns.Add(column); } return columns; }
/// <summary> /// The generated columns for grid. /// </summary> /// <returns> /// The <see cref="GridViewColumnCollection"/>. /// </returns> private GridViewColumnCollection GeneratedColumnsForGrid() { if (MembersTable == null) { return null; } var columns = new GridViewColumnCollection(); /* // Toggle Row Details. if (!string.IsNullOrEmpty(RowDetailTemplateKey)) { GridViewToggleRowDetailsColumn toggleColumn = new GridViewToggleRowDetailsColumn(); toggleColumn.SetBinding(GridViewToggleRowDetailsColumn.IsVisibleProperty, new Binding { Path = new PropertyPath("IsShowToggleRowDetail"), Mode = BindingMode.TwoWay }); columns.Add(toggleColumn); } */ // Get Data Template for Columns DataTemplate columnSelectedHoverTemplate = (DataTemplate)Application.Current.Resources["ColumnSelectedHoverTemplate"]; DataTemplate columnCheckedTemplate = (DataTemplate)Application.Current.Resources["ColumnCheckedTemplate"]; DataTemplate columnRadioTemplate = (DataTemplate)Application.Current.Resources["ColumnRadioSelectedHoverTemplate"]; DataTemplate columnEditDelSelectedHoverTemplate = (DataTemplate)Application.Current.Resources["ColumnEditDelSelectedHoverTemplate"]; foreach (var dcolumn in MembersTable.Columns) { var gridColumn = new GridViewDataColumn { Header = dcolumn.Header, UniqueName = dcolumn.ColumnName }; DynamicColumn customColumn = GridColumns.FirstOrDefault(d => d.ColumnName == dcolumn.ColumnName); var path = gridColumn.DataMemberBinding.Path.Path; gridColumn.DataMemberBinding = new Binding { Path = new PropertyPath(path), Mode = BindingMode.TwoWay }; if (customColumn != null) { // Set Data Template for Columns if (customColumn.IsSelectedColumn && columnSelectedHoverTemplate != null) { gridColumn.CellTemplate = columnSelectedHoverTemplate; } if (customColumn.IsRadioSelectedColumn && columnRadioTemplate != null) { gridColumn.CellTemplate = columnRadioTemplate; } if (customColumn.Width != 0) { gridColumn.Width = customColumn.Width; } if (customColumn.MinWidth != 0) { gridColumn.MinWidth = customColumn.MinWidth; } if (customColumn.DataFormatString != null) { gridColumn.DataFormatString = customColumn.DataFormatString; } if (!this.IsGridReadOnly) { gridColumn.IsReadOnly = customColumn.IsReadOnly; } gridColumn.TextAlignment = customColumn.TextAlignment; gridColumn.HeaderTextAlignment = customColumn.HeaderTextAlignment; if (FilteringGenerate) { switch (customColumn.FilteringTemplate) { case RadGridViewEnum.FilteringDataList: gridColumn.IsFilterable = true; gridColumn.FilterMemberPath = gridColumn.UniqueName; //// column.DataMemberBinding = column.UniqueName; gridColumn.FilteringControl = new FilteringDataList { ItemsSource = customColumn.FilteringDataSource, IsMultiSelect = true, Title = customColumn.FilteringTitle }; break; case RadGridViewEnum.TextFieldFilter: gridColumn.IsFilterable = true; gridColumn.FilterMemberPath = gridColumn.UniqueName; gridColumn.FilteringControl = new TextFieldFilter { AllOperators1 = customColumn.AllOperators, AllOperators2 = customColumn.AllOperators, AllLogicalOperator = customColumn.LogicalOperators, IsNumber = false }; break; case RadGridViewEnum.FilteringComparision: gridColumn.IsFilterable = true; gridColumn.FilterMemberPath = gridColumn.UniqueName; gridColumn.FilteringControl = new FilteringComparision { AllOperators1 = customColumn.AllOperators, AllOperators2 = customColumn.AllOperators, AllLogicalOperator = customColumn.LogicalOperators, IsNumber = false }; break; case RadGridViewEnum.TextFieldDataListFilter: gridColumn.IsFilterable = true; gridColumn.FilterMemberPath = gridColumn.UniqueName; gridColumn.FilteringControl = new TextFieldDataListFilter { ItemsSource = customColumn.FilteringDataSource, IsMultiSelect = true, Title = customColumn.FilteringTitle, AllOperators1 = customColumn.AllOperators, AllOperators2 = customColumn.AllOperators, AllLogicalOperator = customColumn.LogicalOperators, IsNumber = false }; break; default: gridColumn.IsFilterable = false; break; } } else { gridColumn.IsFilterable = false; } switch (customColumn.ColumnTemplate) { case RadGridViewEnum.ColumnCheckedTemplate: if (columnCheckedTemplate != null) { gridColumn.CellTemplate = columnCheckedTemplate; } else { gridColumn.CellTemplate = columnRadioTemplate; } break; case RadGridViewEnum.ColumnRadioSelectedHoverTemplate: if (customColumn.IsRadioSelectedColumn) { gridColumn.CellTemplate = columnRadioTemplate; } break; case RadGridViewEnum.ColumnSelectedHoverTemplate: break; case RadGridViewEnum.ColumnEditDelSelectedHoverTemplate: if (columnEditDelSelectedHoverTemplate != null) { gridColumn.CellTemplate = columnEditDelSelectedHoverTemplate; } break; } } columns.Add(gridColumn); } return columns; }