Sort capabilities in column chooser form.
Add support for filtering guid type of values
Expanding a newly added row in a grid with ChildViewTabsPosition set to Left or Right, InvalidOperationException is thrown. The issue can be reproduced in both bound and unbound mode.
FormatException is raised when a user attempts to filter RadGridView's combobox column
- Create a new project containing RadGridView - Build hierarchy with large text data in cells - Set the AutoSizeRows property to true and AutoSizeColumnMode to Fill - Run the project, scroll down and try to click on a cell
use attached project with pre-build release version of assemblies included in the 'telerik-devbranch-release' folder 1. Create a new project with RadGridView and bind it to a data source. The data source should contain a large number of rows (30000 for example) 2. Add a check box column 3. Run the project 4. Sort by a column (different from the checkbox column) 5. Check a checkbox 6. Click on some other column or row
ADD. RadGridView - one should be able to show the header row on each page exported in PDF
FIX. RadGridView - the DisplayMember, ValueMember and DataSource properties of GridViewComboBoxColumn are not visible in the property builder
To reproduce: void grid_RowValidating(object sender, RowValidatingEventArgs e) { e.Cancel = true; } Pressing the escape key should cancel the edit mode and revert the value
1. Create a new project with RadGridView and set the MultiSelect property to true. 2. Subscribe for the SelectionChanged event. 3. Run the project and select some rows using the mouse. 4. Scroll up to deslect some of the rows. You will see that the SelectionChanged event does not fire.
1. Create a new project with RadGridView. 2. Setup self-referencing hierarchy with 1000 rows and 14 columns. 3. Run the project. 4. Scroll up and down several times. 5. Resize the window. 6. Scroll up and down again. 7. RadGridView will hang.
We should consider the Display attribute when using business objects as data source in RadGridView.
Group Descriptors are added before adding rows in unbound mode and not using defer refresh or Begin/EndUpdate test: ---------------------------------------------------- using System.ComponentModel; using System.Windows.Forms; using Telerik.WinControls.UI; namespace Lab.Grid { public partial class GridGroupInUnboundMode : MainForm { private RadGridView gridView = new RadGridView(); public GridGroupInUnboundMode() { InitializeComponent(); this.gridView.Dock = DockStyle.Fill; this.gridView.Parent = this; this.gridView.BringToFront(); gridView.GroupDescriptors.Add("Name", ListSortDirection.Ascending); GridViewTextBoxColumn col = new GridViewTextBoxColumn(); col.HeaderText = col.Name = "Id"; col.DataType = typeof(int); gridView.Columns.Add(col); col = new GridViewTextBoxColumn(); col.HeaderText = col.Name = "Name"; col.DataType = typeof(string); gridView.Columns.Add(col); col = new GridViewTextBoxColumn(); col.HeaderText = col.Name = "Sum"; col.DataType = typeof(double); gridView.Columns.Add(col); } protected override void OnButton1Click() { gridView.Rows.Add(1, "Ivan", 123.56); gridView.Rows.Add(2, "Ivan", 372.90); gridView.Rows.Add(3, "Peter", 500.00); } protected override void OnButton2Click() { gridView.Rows.Add(4, "George", 300.00); gridView.Rows.Add(5, "George", 600.00); gridView.Rows.Add(6, "George", 100.00); gridView.Rows.Add(7, "Enzo", 78.00); } protected override void OnButton3Click() { gridView.Rows.Add(8, "Enzo", 100.00); gridView.Rows.Add(9, "Enzo", 200.00); gridView.Rows.Add(10, "Enzo", 300.00); } } }
virtual filtering operation - detached filter GUI to support filtering in external datasource or possibility to replace the data in RadGridView control when new filter is applied.
Setting the FieldName of a column in the child template to "Products.Name" does not work properly.
Improve RadGridViewDragDropService extensibility to perform visual drop indication over RadTreeView.
Create GridViewRowInfo's EnsureVisible method overload that expands all parent rows and ensures visibility of the row.
Description: When we scroll the RadGridView from Top to Bottom and Bottom to Top the first record is cut off, if we click the refresh button then it will be displayed properly. To reproduce: - add a RadGridView to a form - add a RadButton to a form - use the following code snippet: public Form1() { InitializeComponent(); radGridView1.MasterTemplate.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.None; radGridView1.EnableCustomFiltering = false; this.radGridView1.AutoSizeRows = true; radGridView1.Columns["CustomerID"].Width = 100; radGridView1.Columns["CompanyName"].Width = 150; radGridView1.Columns["ContactName"].Width = 150; radGridView1.Columns["Country"].Width = 100; radGridView1.Columns["Phone"].Width = 90; radGridView1.Columns["Fax"].Width = 90; radGridView1.Columns["Phone"].AllowFiltering = false; radGridView1.Columns["Fax"].AllowFiltering = false; } private void Form1_Load(object sender, EventArgs e) { // TODO: This line of code loads data into the 'nwindDataSet.Customers' table. You can move, or remove it, as needed. this.customersTableAdapter.Fill(this.nwindDataSet.Customers); } private void radButton1_Click(object sender, EventArgs e) { Form1_Load(sender, e); }
To reproduce: - add RadGridView and populate manually with hierarchical data; - BestFitColumns method of the child template does not work as expected; #1 scenario: radGridView1.MasterTemplate.ExpandAll(); radGridView1.Templates[0].ExpandAll(); radGridView1.Templates[0].BestFitColumns(BestFitColumnMode.AllCells); You will notice that some of the columns in the child template are not wide enough to show the whole cell content; #2 scenario: Subscribe to the ChildViewExpanded event and call BestFitColumns: private void radGridView1_ChildViewExpanded(object sender, ChildViewExpandedEventArgs e) { e.ChildViewInfo.ViewTemplate.BestFitColumns(BestFitColumnMode.AllCells); } As a result the firstly expanded child view adjusts child template columns width and if you expand another child view which needs greater columns width, it is not displayed correctly. Workaround: determine the column width according to the longest cell content: foreach (GridViewDataColumn col in radGridView1.Templates[0].Columns) { BestFitAllCells(col); } private void BestFitAllCells(GridViewColumn column) { MasterGridViewTemplate masterTemplate = column.OwnerTemplate.Parent as MasterGridViewTemplate; if (masterTemplate == null) { return; } RadGridView grid = masterTemplate.Owner; IVirtualizedElementProvider<GridViewRowInfo> rowProvider = grid.TableElement.RowElementProvider; IVirtualizedElementProvider<GridViewColumn> cellProvider = grid.TableElement.ColumnScroller.ElementProvider; float width = 0; foreach (GridViewRowInfo dataRow in column.OwnerTemplate.Rows) { GridRowElement row = rowProvider.GetElement(dataRow, null) as GridRowElement; row.InitializeRowView(grid.TableElement); row.Initialize(dataRow); row.UpdateInfo(); grid.TableElement.Children.Add(row); row.ResetLayout(true); GridVirtualizedCellElement cell = cellProvider.GetElement(column, row) as GridVirtualizedCellElement; cell.Attach(column, row); cell.SetContent(); cell.UpdateInfo(); row.Children.Add(cell); GridHeaderCellElement headerCell = cell as GridHeaderCellElement; if (headerCell != null) { headerCell.UpdateArrowState(); } cell.ResetLayout(true); width = Math.Max(width, this.GetCellDesiredWidth(cell)); row.Children.Remove(cell); grid.TableElement.Children.Remove(row); this.Detach(cellProvider, cell); this.Detach(rowProvider, row); } width = Math.Max(width, TextRenderer.MeasureText(column.HeaderText, grid.Font).Width); column.Width = (int)width; } private float GetCellDesiredWidth(GridCellElement cell) { cell.Measure(new SizeF(float.PositiveInfinity, float.PositiveInfinity)); return cell.DesiredSize.Width; } private void Detach(IVirtualizedElementProvider<GridViewColumn> elementProvider, GridCellElement cell) { GridVirtualizedCellElement virtualizedCell = cell as GridVirtualizedCellElement; if (virtualizedCell != null) { elementProvider.CacheElement(virtualizedCell); virtualizedCell.Detach(); return; } cell.Dispose(); } private void Detach(IVirtualizedElementProvider<GridViewRowInfo> elementProvider, GridRowElement row) { GridVirtualizedRowElement virtualizedRоw = row as GridVirtualizedRowElement; if (virtualizedRоw != null) { elementProvider.CacheElement(virtualizedRоw); virtualizedRоw.Detach(); return; } row.Dispose(); }
When a user groups the grid by a certain column and then attempts to drag the column back to the header, column reorder is possible, even though the AllowColumnReorder is false.