Workaround: Me.RadGridView1.Columns("ProductName").TextAlignment = ContentAlignment.MiddleRight
Steps to reproduce: 1. Add a RadGridView with one column and one row to a form 2. Set the value of the only data cell in the grid to a string containing more than 32 'a' characters 3. Type 'a' in the search row. You will see an OverflowException
To reproduce: add a RadGridView with many columns so the horizontal scroll bar will be shown. Start navigating by pressing the right arrow key. You will notice that when you reach the last visible column in the current view, navigating to the next column changes the whole view and the current column is displayed at the beginning of the view. The expected behavior is that after pressing the right arrow key the horizontal scroll bar will move only one column forward.
To reproduce: Add a RadGridView and set the Form.UseWaitCursor property to true. When the cursor is positioned inside the RadGridView the cursor is set back to default. Workaround: public RadForm1() { InitializeComponent(); radGridView1.GridBehavior = new CustomRowBehavior(); } public class CustomRowBehavior : BaseGridBehavior { public override bool OnMouseMove(MouseEventArgs e) { Cursor cursor = this.GridControl.Cursor; bool result = base.OnMouseMove(e); this.GridControl.Cursor = cursor; return result; } }
To reproduce: Declare the following classes: public class Test { public string Name { get; set; } public Child Child { get; set; } } public class Child { public string ChildName { get; set; } public override string ToString() { return ChildName; } } Add the following columns: gridViewTextBoxColumn1.FieldName = "Name"; gridViewTextBoxColumn1.HeaderText = "column1"; gridViewTextBoxColumn1.Name = "column1"; gridViewTextBoxColumn2.FieldName = "Child"; gridViewTextBoxColumn2.HeaderText = "column2"; gridViewTextBoxColumn2.Name = "column2"; this.radGridView1.MasterTemplate.Columns.AddRange(new Telerik.WinControls.UI.GridViewDataColumn[] { gridViewTextBoxColumn1, gridViewTextBoxColumn2}); this.radGridView1.Name = "radGridView1"; this.radGridView1.Size = new System.Drawing.Size(429, 176); this.radGridView1.TabIndex = 0; this.radGridView1.Text = "radGridView1"; Bind RadGridView to the following data: var data = new List<Test>(); for (int i = 0; i < 10; i++) { data.Add(new Test { Name = "Name" + i, Child = new Child { ChildName = "Child " + i } }); } Export to Excel: ExportToExcelML excelExporter = new ExportToExcelML(radGridView1); excelExporter.RunExport(System.IO.Path.Combine(System.IO.Directory.GetCurrentDirectory(), @"test.xls")); You will notice that column2 will not have text Workaround: Subscribe to the ExcelCellFormatting event: void excelExporter_ExcelCellFormatting(object sender, Telerik.WinControls.UI.Export.ExcelML.ExcelCellFormattingEventArgs e) { if (e.ExcelCellElement.Data.DataItem.GetType().IsClass) { e.ExcelCellElement.Data.DataItem = e.ExcelCellElement.Data.DataItem.ToString(); } }
This happened multiple times. In the property builder, I tried to delete the column and Visual Studio crashed. I was able to delete other columns fine, but this particular column caused a problem. The only difference that I can see between the other columns and the one that caused the problem was the conditionalformattingobject. Once I deleted this conditionalformattingobject, I was able to delete the column without any problem.
To reproduce: add a RadGridView and bind it to Employees data table. 1. Group by "Title". 2. Group by "Country". 3. Group by "City". If you try to expand the "Sales Representative" group, no rows will be displayed. Please refer to the attached gif file, illustrating better the obtained behavior.
To reproduce: add a RadGridView and bind it to Employees data table. Use the following code snippet: Me.RadGridView1.EnableGrouping = True Me.RadGridView1.EnableFiltering = True Dim summaryItem As New GridViewSummaryItem() summaryItem.Name = "Address" summaryItem.Aggregate = GridAggregateFunction.Count Dim summaryRowItem As New GridViewSummaryRowItem() summaryRowItem.Add(summaryItem) Me.RadGridView1.SummaryRowsTop.Add(summaryRowItem) Me.RadGridView1.MasterTemplate.ShowParentGroupSummaries = True 1. Group by "Title" and expand "Sales Representative" group. 2. Group by "Country" and "City". 3.Expand "Sales Representative" group >> "UK" sub-group >> "London" sub-group. You will notice that the summary row shows "3", because you actually have 3 employees in "London" group. 4.Filter by "FirstName" (Contains: "a" for example). As a result 2 employess will remain in "London" group, but the summary row will continue displaying "3". The attached gif file illustrates better the described behavior. Workaround: in the FilterChanged event store the applied GroupDescriptors, clear the RadGridView.GroupDescriptors collection, and add again the stored descriptors. Note that it is necessary to store the expanded groups and restore their state as well.
To reproduce: use the following code snippet and refer to the attached sample gif file. When you enter edit mode for the first time, the editor is empty. Each next entering edit mode displays the respective text in the editor, although it is cut off. public Form1() { InitializeComponent(); radGridView1.Font = new Font("Segoe UI", 18.0f); radGridView1.CellEditorInitialized += pgGrid_CellEditorInitialized; AddColumns(); radGridView1.DataSource = BuildDummyTable(); radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill; } private void pgGrid_CellEditorInitialized(object sender, GridViewCellEventArgs e) { RadTextBoxEditor editor = e.ActiveEditor as RadTextBoxEditor; if (editor != null) { ((RadTextBoxEditorElement)editor.EditorElement).TextBoxItem.Multiline = true; ((RadTextBoxEditorElement)editor.EditorElement).Padding = new Padding(0); } } private void AddColumns() { GridViewTextBoxColumn colA = new GridViewTextBoxColumn("colA"); radGridView1.Columns.Add(colA); GridViewTextBoxColumn colB = new GridViewTextBoxColumn("colB"); radGridView1.Columns.Add(colB); GridViewTextBoxColumn colC = new GridViewTextBoxColumn("colC"); radGridView1.Columns.Add(colC); GridViewTextBoxColumn colD = new GridViewTextBoxColumn("colD"); radGridView1.Columns.Add(colD); } private DataTable BuildDummyTable() { DataTable table = new DataTable(); table.Columns.Add("colA"); table.Columns.Add("colB"); table.Columns.Add("colC"); table.Columns.Add("colD"); table.Rows.Add("value 1A", "value 1B", "value 1C", "value 1D"); table.Rows.Add("value 2A", "value 2B", "value 2C", "value 2D"); table.Rows.Add("value 3A", "value 3B", "value 3C", "value 3D"); return table; }
Use the following code snippet: public Form1() { InitializeComponent(); GridViewDecimalColumn decimalColumn = new GridViewDecimalColumn("Id"); radGridView1.MasterTemplate.Columns.Add(decimalColumn); GridViewTextBoxColumn textBoxColumn = new GridViewTextBoxColumn("Name"); radGridView1.MasterTemplate.Columns.Add(textBoxColumn); GridViewDateTimeColumn dateTimeColumn = new GridViewDateTimeColumn("CreatedOn"); radGridView1.MasterTemplate.Columns.Add(dateTimeColumn); radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill; for (int i = 0; i < 10; i++) { radGridView1.Rows.Add(i, "Name" + i, DateTime.Now.AddDays(i)); } radGridView1.ClipboardPasteMode = GridViewClipboardPasteMode.Disable; } If you copy a cell content and try to paste it to another cell of the same column, the content is pasted successfully, although the ClipboardPasteMode property is set to Disable.
To reproduce: DataTable t = new DataTable(); t.Columns.Add("timeSpan", typeof(TimeSpan)); t.Rows.Add(TimeSpan.FromHours(11)); t.Rows.Add(TimeSpan.FromHours(2)); t.Rows.Add(TimeSpan.FromHours(4)); t.Rows.Add(TimeSpan.FromMinutes(17)); radGridView1.DataSource = t; GridViewSummaryItem summaryItem = new GridViewSummaryItem(); summaryItem.Name = "timeSpan"; summaryItem.Aggregate = GridAggregateFunction.Sum; GridViewSummaryRowItem summaryRowItem = new GridViewSummaryRowItem(); summaryRowItem.Add(summaryItem); this.radGridView1.SummaryRowsTop.Add(summaryRowItem); Workaround: CustomSummaryItem summaryItem = new CustomSummaryItem("timeSpan", "", GridAggregateFunction.Sum); GridViewSummaryRowItem summaryRowItem = new GridViewSummaryRowItem(); summaryRowItem.Add(summaryItem); this.radGridView1.SummaryRowsTop.Add(summaryRowItem); public class CustomSummaryItem : GridViewSummaryItem { public CustomSummaryItem(string name, string formatString, GridAggregateFunction aggregate) : base(name, formatString, aggregate) { } public override object Evaluate(IHierarchicalRow row) { TimeSpan timeSpanSum = new TimeSpan(); foreach (GridViewRowInfo childRow in row.ChildRows) { timeSpanSum += (TimeSpan)childRow.Cells["timeSpan"].Value; } return timeSpanSum; } }
To reproduce: - Add two GridViewMultiComboBoxColumns with different number of columns to a grid. - set AutoSizeDropDownToBestFit to true in the CellEditorInitialized event. - Start the project and open the drop down for the first column and then for the second. - You will notice that the second time the drop down size is not calculated properly. Workaround: void radGridView1_CellEditorInitialized(object sender, GridViewCellEventArgs e) { RadMultiColumnComboBoxElement el = e.ActiveEditor as RadMultiColumnComboBoxElement; if (el != null) { FieldInfo propertyInfo = el.GetType().GetField("savedColumnsWidth", BindingFlags.NonPublic | BindingFlags.Instance); propertyInfo.SetValue(el, -1); el.AutoSizeDropDownToBestFit = true; } }
To reproduce: - Add a grid to a blank form. - Group the grid on a single column and expand a group row. - Add and then remove a summary row by calling the clear method. - You will notice that the summary row is not removed. Workaround: reset the groups after the summary rows are cleared: radGridView1.SummaryRowsBottom.Clear(); List<GroupDescriptor> list = new List<GroupDescriptor>(); foreach (var item in radGridView1.GroupDescriptors) { list.Add(item); } radGridView1.GroupDescriptors.Clear(); radGridView1.MasterTemplate.Refresh(); foreach (var item in list) { radGridView1.GroupDescriptors.Add(item); } radGridView1.MasterTemplate.Refresh();
To reproduce: Download the attached files. One contains a project with TelerikDataAccess, the other one contains the SQL script to create the database. Before starting the project notice the column with header text "column1". You will see that its expression is as follows: "Player.Person.FirstName+\",\"+Player.Person.LastName". Starting the project at this point will not produce an exception. Change the name of the column to FirstName and start the project, you will see the stack overflow exception.
To reproduce: Add a row to RadGridView and select it. Then remove it from the rows. Check the SelectedRows collection and you will see that the row is inside. The collection should not contain removed rows and the SelectionChanged event should be fired when a selected row is removed. Workaround: Set the IsSelected property of the row to false prior removing it.
To reproduce: Open the examples and navigate to GridView -> RightToLeft and toggle on RightToLeft. You will see that the GridGroupHeaderRowElements will have its text LeftToRight. Workaround: Use ViewCellFormatting: private void Grid_ViewCellFormatting15(object sender, CellFormattingEventArgs e) { if (e.CellElement.RowElement is GridGroupHeaderRowElement && e.CellElement.RowElement.Children.Any() && e.CellElement.RowElement.Children.Last() is GridGroupContentCellElement) { (e.CellElement.RowElement.Children.Last() as GridGroupContentCellElement).TextAlignment = System.Drawing.ContentAlignment.MiddleRight; } }
To reproduce: - Set EnterKeyMode to EnterMovesToNextRow. - Enter an invalid value in the first cell and press enter two times. - Enter valid value and press enter again. - You will notice that the current row is moved appropriately.
To reproduce: Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Me.ProductsTableAdapter.Fill(Me.NwindDataSet.Products) Dim menu As New ContextMenu() For index = 1 To 4 menu.MenuItems.Add("item" & index) Next Me.ContextMenu = menu End Sub Workaround: Const WM_CONTEXTMENU As Integer = &H7B Public Class Grid Inherits RadGridView Protected Overrides Sub WndProc(ByRef m As Message) If m.Msg = WM_CONTEXTMENU Then Return End If MyBase.WndProc(m) End Sub Public Overrides Property ThemeClassName As String Get Return GetType(RadGridView).FullName End Get Set(value As String) MyBase.ThemeClassName = value End Set End Property End Class
To reproduce: -Add GridViewMaskBoxColumn to a grid. -Set the Mask type to Regex and set any mask you want. -When you leave the cell NullRefernceException is thrown.