Workaround: subscribe to the PageChanged event and update the scroll range. private void RadGridView1_PageChanged(object sender, EventArgs e) { this.RadGridView1.TableElement.RowScroller.UpdateScrollRange(); }
To reproduce: use the following code snippet and try to delete a child row: public Form1() { InitializeComponent(); DataTable dt = new DataTable(); dt.Columns.Add("Id", typeof(int)); dt.Columns.Add("ParentId", typeof(int)); dt.Columns.Add("Name", typeof(string)); for (int i = 0; i < 5; i++) { dt.Rows.Add(i, null, "Item" + i); } Random rand = new Random(); for (int i = 5; i < 30; i++) { dt.Rows.Add(i, rand.Next(0, 5), "Child item" + i); } this.radGridView1.Relations.AddSelfReference(this.radGridView1.MasterTemplate, "Id", "ParentId"); this.radGridView1.DataSource = dt; this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill; this.radGridView1.UserDeletingRow += radGridView1_UserDeletingRow; } private void radGridView1_UserDeletingRow(object sender, Telerik.WinControls.UI.GridViewRowCancelEventArgs e) { if (this.radGridView1.CurrentRow.HasChildRows()) { DialogResult dialogResult = MessageBox.Show("Are you sure you want to delete this row?", "Delete Row confirmation", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.No) { e.Cancel = true; } } } Workaround: use the RadGridView.CurrentRow.ChildRows.Count property.
To reproduce: - Set the row height to 1000. - Call the grid PrintPreview method. As workaround one can set the MaxHeight of the rows prior printing.
To reproduce: use the following code snippet and follow the steps from the attached gif file. public Form1() { InitializeComponent(); List<Item> items = new List<Item>(); for (int i = 1; i < 10; i++) { items.Add(new Item(i, 0, "Item" + i)); } Random rand = new Random(); for (int i = 10; i < 50; i++) { items.Add(new Item(i, rand.Next(1, 10), "Item" + i)); } this.radGridView1.Relations.AddSelfReference(this.radGridView1.MasterTemplate, "Id", "ParentId"); this.radGridView1.DataSource = items; this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill; this.radGridView1.EnableFiltering = true; this.radGridView1.ShowHeaderCellButtons = true; } public class Item { public int Id { get; set; } public int ParentId { get; set; } public string Name { get; set; } public Item(int id, int parentId, string name) { this.Id = id; this.ParentId = parentId; this.Name = name; } } Workaround: use the basic filtering
To reproduce: - Add a ColumnGroupsViewDefinition protected override void OnShown(EventArgs e) { base.OnShown(e); VisualStudio2012LightTheme theme = new VisualStudio2012LightTheme(); Telerik.WinControls.ThemeResolutionService.ApplicationThemeName = theme.ThemeName; this.radGridView1.BestFitColumns(); } Workaround: protected override void OnShown(EventArgs e) { base.OnShown(e); this.radGridView1.BestFitColumns(); VisualStudio2012LightTheme theme = new VisualStudio2012LightTheme(); Telerik.WinControls.ThemeResolutionService.ApplicationThemeName = theme.ThemeName; }
Workaround: custom RadGridViewDragDropService and an override of the HandleMouseMove method, please check the attached project
To reproduce: void radGridView1_CellValueChanged(object sender, Telerik.WinControls.UI.GridViewCellEventArgs e) { if (e.Value == null || e.Value == DBNull.Value) { e.Row.Delete(); } } - Use the enter key to confirm the change Workaround: void radGridView1_CellEndEdit(object sender, Telerik.WinControls.UI.GridViewCellEventArgs e) { if (e.Value == null || e.Value == DBNull.Value) { e.Row.Delete(); } }
Please refer to the attached sample project and follow the steps illustrated on the attached gif file. Workaround: subscribe to the CellBeginEdit event and focus the grid: public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); this.radGridView1.CellBeginEdit += radGridView1_CellBeginEdit; } private void radGridView1_CellBeginEdit(object sender, GridViewCellCancelEventArgs e) { this.radGridView1.Focus(); } }
To reproduce: - Create a new Visual Studio project with a single form. - Add a RadGridView control to the form. - Add a child Template to the RadGridView. - In the properties of this child template, enable AutoExpand Groups. - Close the form editor and re-open.
How to reproduce: public partial class Form1 : Form { public Form1() { InitializeComponent(); this.radGridView1.DataSource = this.GetData(); this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill; this.radGridView1.RightToLeft = System.Windows.Forms.RightToLeft.Yes; foreach (var col in this.radGridView1.Columns) { col.HeaderTextAlignment = ContentAlignment.MiddleLeft; } } private DataTable GetData() { DataTable dt = new DataTable(); dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("Date", typeof(DateTime)); dt.Columns.Add("Bool", typeof(bool)); dt.Columns.Add("Bool1", typeof(bool)); dt.Columns.Add("Bool2", typeof(bool)); for (int i = 0; i < 50; i++) { dt.Rows.Add("Name " + i, DateTime.Now.AddMinutes(i), i % 2 == 0 ? true : false, false, false); } return dt; } private void radButton1_Click(object sender, EventArgs e) { this.radGridView1.PrintPreview(); } } Workaround: public partial class Form1 : Form { public Form1() { InitializeComponent(); this.radGridView1.DataSource = this.GetData(); this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill; this.radGridView1.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.radGridView1.PrintCellFormatting += radGridView1_PrintCellFormatting; foreach (var col in this.radGridView1.Columns) { col.HeaderTextAlignment = ContentAlignment.MiddleLeft; } } private void radGridView1_PrintCellFormatting(object sender, PrintCellFormattingEventArgs e) { if (e.Row is GridViewTableHeaderRowInfo && this.radGridView1.RightToLeft == System.Windows.Forms.RightToLeft.Yes) { e.PrintCell.TextAlignment = ContentAlignment.MiddleRight; } } private DataTable GetData() { DataTable dt = new DataTable(); dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("Date", typeof(DateTime)); dt.Columns.Add("Bool", typeof(bool)); dt.Columns.Add("Bool1", typeof(bool)); dt.Columns.Add("Bool2", typeof(bool)); for (int i = 0; i < 50; i++) { dt.Rows.Add("Name " + i, DateTime.Now.AddMinutes(i), i % 2 == 0 ? true : false, false, false); } return dt; } private void radButton1_Click(object sender, EventArgs e) { this.radGridView1.PrintPreview(); } }
To reproduce: - Add a grid to a split panel. - Edit a cell and resize the panel without ending the edit. - Click back in the same cell. Workaround: private void RadGridView1_CellEditorInitialized(object sender, GridViewCellEventArgs e) { BaseGridEditor editor = e.ActiveEditor as BaseGridEditor; var element = editor.EditorElement as RadTextBoxEditorElement; if (element != null) { element.TextBoxItem.HostedControl.LostFocus -= HostedControl_LostFocus; element.TextBoxItem.HostedControl.LostFocus += HostedControl_LostFocus; } } private void HostedControl_LostFocus(object sender, EventArgs e) { this.RadGridView1.EndEdit(); }
Workaround: Inherit the GridViewSearchRowInfo and override the SelectNextSearchResult method class MyGridViewSearchRowInfo : GridViewSearchRowInfo { private GridViewInfo gridViewInfo; private RadGridView radGridView; public MyGridViewSearchRowInfo(GridViewInfo gridViewInfo, RadGridView radGridView) : base(gridViewInfo) { this.radGridView = radGridView; } public override Type RowElementType { get { return typeof(GridSearchRowElement); } } public override void SelectNextSearchResult() { if (this.radGridView != null) { this.radGridView.ElementTree.Control.Invoke(() => { base.SelectNextSearchResult(); }); } } }
To reproduce: - Add textbox and checkbox columns to a grid the checkbox column should not be visible without scrolling to the right. - Change the data source in the FilterChanged event. - Test this by moving the checkbox column in front of the text box column.
To reproduce: 1. Add a UserControl and drop a RadGridView in it. 2. Use the following code: public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); ColumnGroupsViewDefinition view = new ColumnGroupsViewDefinition(); this.radGridView1.ViewDefinition = view; view.ColumnGroups.Add(new GridViewColumnGroup("Group")); view.ColumnGroups[0].Rows.Add(new GridViewColumnGroupRow() ); GridViewTextBoxColumn col = new GridViewTextBoxColumn("Col1"); this.radGridView1.Columns.Add(col); view.ColumnGroups[0].Rows[0].ColumnNames.Add("Col1"); } } 3. Drag the UserControl from the Toolbox to the form. Workaround: set the ViewDefinition property after all columns are added.
Workaround: check the attached project
To reproduce: - Assing context menu using one of the default properties.
Introduce a property to change symbol used to separate summaryItems in SummaryRowGroupHeaders.
To reproduce: GridViewHyperlinkColumn col = new GridViewHyperlinkColumn(); col.FieldName = "Name"; col.HyperlinkOpenAction = HyperlinkOpenAction.DoubleClick; Workaround: Use the CellDoubleClick event: void radGridView1_CellDoubleClick(object sender, GridViewCellEventArgs e) { if (e.Column is GridViewHyperlinkColumn) { string hyperlink = e.Value.ToString(); } }