On the form load, the grid is loaded with three parts. Upon refresh, the buttons call a method which generates the same data table but with some additional parts - to simulate a data refresh. Button 1 - Refresh Data - This button calls a method that operates the same as detailed initially in the ticket; it utilizes the BeginUpdate/EndUpdate methods around the updating of the grid. This replicates the scenario I initially described where message boxes are fired stating "Column 'xxx' does not belong to table 'fileSystem'.". Button 2 - Refresh Data 2 - This button calls a method that is modified as suggested - the BeginUpdate/EndUpdate methods have been removed and the DataSource is set directly. Button 3 - Clear Data - This button is meant to simply clear the data from the grid. It only attempts to set the DataSource property to Nothing.
To reproduce: - Add a grid to a form and open the property builder - Add couple columns and group by some of the columns - Press ok -> the grid is grouped - Open the Property Builder again, click the X button of the group to remove it and click the OK button of the Property Builder -> the group is not removed.
1) When the grid first loads, the top-left most cell is automatically selected. Before clicking anywhere within the grid view, if you hold SHIFT and click the cell to the right of the selected, the following exception is thrown. 2) You can get around the above exception by clicking a different cell in the grid view before performing a SHIFT select or CTRL+C operation is performed against the grid view. If you select a different cell, and then perform a SHIFT selection to a cell in a different column, you will experience the "An entry with the same key already exists." exception
The cell navigation is wrong when the grid is ungrouped. Steps to reproduce: 1. Enable cell selection mode 2. Navigate with keyboard 3. Group the RadGridView by one column 4. Navigate with keyboard 5. Ungroup the RadGridView's rows 6. Now Keyboard navigation is wrong. Same behavior appears with the default selection mode: - Group the grid and select a row in a group - Ungroup and use the keyboard to navigate between the rows => it navigates only the rows that were in the group where we have selected a row WORKAROUND: private void radGridView1_GroupByChanged(object sender, Telerik.WinControls.UI.GridViewCollectionChangedEventArgs e) { GridViewRowInfo row = this.radGridView1.CurrentRow; this.radGridView1.CurrentRow = null; this.radGridView1.CurrentRow = row; }
Custom filtering does not work when self-referencing hierarchy used in RadGridView. Work around: GridView.EnableFiltering = !GridView.EnableFiltering; GridView.EnableFiltering = !GridView.EnableFiltering;
If you set the MinWidth and MaxWidth to a column and then set AutoSizeColumnMode to Fill (all this in the form constructor) a gap will appear between the columns. Workaround: set the Fill before the MinWidth and MaxWidth and to do all these operations on Load.
Work Around: 1. Create custom text box editor. public class MyTextBoxEditor : RadTextBoxEditor { private bool isValueChanging = false; private int selectionStart = -1; public MyTextBoxEditor()
Steps to reproduce - by using the code below follow these steps 1) Enter some text in the first cell 2) In the first ComboBox cell ("city") type the beginning of the word, for example "L", then the dataSource gets filtered and contains only items begins with "L". 3) Move down to the second Item by the down arrow key and choose it by pressing tab key 4) Now the next cell becomes focused, type in capital "M" Result: Exception: IndexOutOfRangeException - "Index was outside the bounds of the array." DataTable dt = new DataTable(); dt.Columns.Add("name"); dt.Columns.Add("city", typeof(int)); dt.Columns.Add("role", typeof(int)); radGridView1.DataSource = dt;. radGridView1.Columns.RemoveAt(1); radGridView1.Columns.RemoveAt(1); DataTable dtCities = new DataTable(); dtCities.Columns.Add("id", typeof(int)); dtCities.Columns.Add("name"); dtCities.Rows.Add(1, "New York"); dtCities.Rows.Add(2, "London"); dtCities.Rows.Add(2, "Lisabon"); GridViewComboBoxColumn cityCol = new GridViewComboBoxColumn("city"); cityCol.DataSource = dtCities; cityCol.ValueMember = "id"; cityCol.DisplayMember = "name"; cityCol.AutoCompleteMode = AutoCompleteMode.SuggestAppend; cityCol.DropDownStyle = Telerik.WinControls.RadDropDownStyle.DropDown; radGridView1.Columns.Add(cityCol); DataTable dtRoles = new DataTable(); dtRoles.Columns.Add("id", typeof(int)); dtRoles.Columns.Add("name"); dtRoles.Rows.Add(1, "Sales Man"); dtRoles.Rows.Add(2, "Manager"); GridViewComboBoxColumn roleCol = new GridViewComboBoxColumn("role"); roleCol.DataSource = dtRoles; roleCol.ValueMember = "id"; roleCol.DisplayMember = "name"; roleCol.AutoCompleteMode = AutoCompleteMode.SuggestAppend; roleCol.DropDownStyle = Telerik.WinControls.RadDropDownStyle.DropDown; radGridView1.Columns.Add(roleCol); WORKAROUND: Replace the editor with a new one to avoid reusage void radGridView1_EditorRequired(object sender, EditorRequiredEventArgs e) { if (e.EditorType == typeof(RadDropDownListEditor)) { e.Editor = new RadDropDownListEditor(); } }
Steps to reproduce: 1. Use the RadGridView Smart Tag to set its data source 2. Press "Add Project DataSource" 3. Select "Object" 4. Drill down and select the class you created. (see below) 5. Select the New Data Source 6. Run the project Code to reproduce: public class TestClass { public enum Month { January, Febuary, March, April, May, June, July, August, September, October, November, December } public Month TestMonth {get; set;} public String TestMessage {get; set;} public TestClass(Month month, String message) { TestMonth = month; TestMessage = message; } } Workaround: Use BindingList instead System.Windows.Forms.BindingSource.
Create a GridViewComboBoxColumn. When you select the field either by tab or single-click, it is no longer possible to select a value by pressing an alpha-numeric key on keyboard. You must first press the down-arrow key, or select a value with the mouse. Pressing the down-arrow shouldn't be required.
STEPS TO REPRODUCE: 1) Create an excel file with sample string values (for example 3x3): | Value 1 | Value 2 | Value 3 | | Value 4 | Value 5 | Value 6 | | Value 7 | Value 8 | Value 9 | 2) Validate as double: private ErrorProvider errorProvider = new ErrorProvider(); void gridView_CellValidated(object sender, CellValidatedEventArgs e) { if (e.Value == null) { return; } var cell = e.Row.Cells[e.ColumnIndex]; double value = 0; if (double.TryParse(e.Value.ToString(), out value)) { cell.ErrorText = string.Empty; errorProvider.SetError(gridView, string.Empty); } else { cell.ErrorText = "Wrong input format"; errorProvider.SetError(gridView, "Wrong input format"); } } 3) Copy the cells from excel and paste them in the grid Expected result: Validate all cells Actual result: Only the current cell is being validated and the CellValidated and CellValidating events are not fired for the other cells WORKAROUND: public class CustomGridBehavior : BaseGridBehavior { Form1 form; public CustomGridBehavior(Form1 form) { this.form = form; } public override bool ProcessKey(KeyEventArgs keys) { if (keys.KeyCode == Keys.V && keys.Control) { GridControl.MasterTemplate.Paste(); foreach (GridViewRowInfo row in GridControl.ChildRows) { form.ValidateCell(row.Cells[GridControl.CurrentColumn.Index]); } return true; } return base.ProcessKey(keys); } } void gridView_ContextMenuOpening(object sender, ContextMenuOpeningEventArgs e) { foreach (RadMenuItem item in e.ContextMenu.Items) { if (item.Text == "Paste") { e.ContextMenu.Items.Remove(item); break; } } RadMenuItem myPasteItem = new RadMenuItem("Paste"); myPasteItem.Click += new EventHandler(myPasteItem_Click); e.ContextMenu.Items.Add(myPasteItem); } void myPasteItem_Click(object sender, EventArgs e) { gridView.MasterTemplate.Paste(); foreach (GridViewRowInfo row in gridView.ChildRows) { ValidateCell(row.Cells[gridView.CurrentColumn.Index]); } }
1. Create a new project and add RadGridView. 2. Bind a hierarchy. 3. Set MultiSelect property to true. 4. Replace default GridViewHierarchyRowInfo class with a custom one and override its SetBooleanProperty method. 5. Change child rows IsSelected property when parent row IsSelected property changes. 6. Run the project and try to select rows with the mouse.
1. Create a new project with RadGridView. 2. Call Rows.Clear method. 3. Add some rows. 4. Run the project and you will see that the scrollbar maximum is wrong.
The setup of ExpressionFormattingObject for inner GridViewTemplate not apply the conditional formatting to children rows
Run the enclosed application and select the funnel icon in most right column "AKTIV" and select menu item "No filter". The application crashes. If you do the same using checkbox in filter cell, everything works fine.
Allow hiding the SummaryRowItems in RadGridView's Groups
When one exports a grid with text written in right-to-left the exported file has all text written in left-to-right.
FormatException is raised when a user attempts to filter RadGridView's combobox column
The DataType property is not implemented in the designer. Currently you could set this property only by code.
The used RadGridView BindingSource is bind to another instance of BindingSource in this case