When RightToLeft is enabled in RadGridView and you try to print it, the layout of the pages is messed up.
"IsContainedIn" and "IsNotContainedIn" operators currently not work properly with composite values like: "1, 2, 3"
You cannot select cells from first and last column when the RadGridView is in right to left mode.
When a RadGridView instance is initialized in the Form's constructor, the grid is not assigned a binding context. Note: This is a desired behavior.
To reproduce: public Form1() { InitializeComponent(); Random r = new Random(); DataTable table = new DataTable(); table.Columns.Add("ID", typeof(int)); table.Columns.Add("Name", typeof(string)); table.Columns.Add("Bool", typeof(bool)); table.Columns.Add("DateColumn", typeof(DateTime)); for (int i = 0; i < 10; i++) { table.Rows.Add(i, "Row " + i, r.Next(10) > 5 ? true : false, DateTime.Now.AddHours(i)); } this.radGridView1.DataSource = table; radGridView1.Columns[0].FormatString = "{0:n3}"; } MemoryStream ms = new MemoryStream(); private void radButton1_Click(object sender, EventArgs e) { // ms.SetLength(0); reset memory stream to save new layout radGridView1.SaveLayout(ms); } private void radButton2_Click(object sender, EventArgs e) { radGridView1.LoadLayout(ms); } }
To reprouduce, have a grid with multiple rows selected using the translucent rectangle and use the following code on a button click: using System; using System.Data; using System.Windows.Forms; using Telerik.WinControls.UI; namespace Lab.Grid { public partial class GridSelectionException : MainForm { private RadGridView gridView = new RadGridView(); public GridSelectionException() { InitializeComponent(); gridView.Dock = DockStyle.Fill; gridView.Parent = this; gridView.BringToFront(); Random r = new Random(); DataTable table = new DataTable(); table.Columns.Add("ID"); table.Columns.Add("Name"); table.Columns.Add("Bool"); for (int i = 0; i < 10; i++) { table.Rows.Add(i, "Row" + i, (r.Next(10) > 5) ? true : false); } gridView.DataSource = table; gridView.MultiSelect = true; } protected override void OnButton1Click() { //your code for deleting rows if (this.gridView.SelectedRows.Count > 0) { System.Windows.Forms.Cursor.Current = Cursors.WaitCursor; GridViewDataRowInfo[] rows = new GridViewDataRowInfo[this.gridView.SelectedRows.Count]; this.gridView.SelectedRows.CopyTo(rows, 0); this.gridView.TableElement.BeginUpdate(); for (int i = 0; i <= rows.Length - 1; i++) { //rows[i].IsSelected = false; rows[i].Delete(); } this.gridView.TableElement.EndUpdate(); System.Windows.Forms.Cursor.Current = Cursors.Arrow; } } } }
Currently when clicking on the expander cell RadGridView scrolls to the currently selected column which in some cases causes unnecessary scrolling Workaround: public class CustomGridControl : RadGridView { public override string ThemeClassName { get { return typeof(RadGridView).FullName; } set { } } protected override void OnMouseDown(MouseEventArgs e) { RadElement element = this.ElementTree.GetElementAtPoint(e.Location); GridGroupExpanderCellElement expanderCell = element as GridGroupExpanderCellElement; if (expanderCell == null) { expanderCell = element.FindAncestor<GridGroupExpanderCellElement>(); } if (expanderCell != null) { this.TableElement.BeginUpdate(); expanderCell.RowInfo.IsExpanded = !expanderCell.RowInfo.IsExpanded; this.TableElement.HScrollBar.Value = 0; this.TableElement.EndUpdate(); return; } base.OnMouseDown(e); } }
debug attached sample application steps: set number of rows to 500 change to 2nd page change to 1st page set number of rows to 0 change to 2nd page
FIX. RadGridView - the PropertyName from the arguments of the RowsChanged event is null, while it should display the changed field name
FIX. RadGridView - CompositeFilterDescriptors does not work properly
FIX. RadGridView- exception when filtering date time column which contains null values
RadGridView - the Row property in the event arguments of the RowValidating event is null when the user deletes a row. Also the Column property in the event arguments of the CellValidating event is null when the user deletes a row.
FIX. RadGridView - exception when copying cells from different groups
When the DataType of the column is not a floating point number, decimals should not be displayed. This should affect both the excel like filtering and the regular filtering
Steps to reproduce: 1. Add a RadGridView to a form. 2. Add a code that would load data in the RadGridView from an IDataReader: radGridView1.MasterTemplate.LoadFrom(iReader); 3. Set EnableAlternatingRowColor to true and set some AlternatingRowColor 4. Run the project and you will see that the alternating row color is not applied.
Workaround: set the Position of the current item of the BindingSource in the CurrentRowChanged event of RadGridView: void rgvInvoices_CurrentRowChanged(object sender, CurrentRowChangedEventArgs e) { int index = bsInvoices.IndexOf(e.CurrentRow.DataBoundItem) ; bsInvoices.Position = index; }
Save and load layout to work in all view definitions.
Currently none of the exporters can be canceled.
A user should be able to disable executing any of the cut/copy/paste (ctrl+x, ctrl+c, ctrl+v) commands.
Steps to reproduce: 1. Drag a RadGridView to a form 2. Add a text column and a hyperlink column 3. Add a row with null value for the hyperlink cell 4. Set some text for the hyperlink cell 5. Subscribe to the HyperlinkOpening/ed events 6. Run the project and click on the hyperlink, you will see that none of the events will be fired. Workaround: To work around it, you can create your own cell element which derives from the GridHyperlinkCellElement and override the ProcessHyperlink method to handle the user clicking on a hyperlink: public class MyHyperlinkCellElement : GridHyperlinkCellElement { public MyHyperlinkCellElement(GridViewColumn col, GridRowElement row) : base(col, row) { } protected override void ProcessHyperlink() { //handle hyperlink click } } After you have created your cell element, you can replace the original using the CreateCell event of the RadGridView: private void radGridView1_CreateCell(object sender, GridViewCreateCellEventArgs e) { if (e.Column is GridViewHyperlinkColumn) { e.CellType = typeof(MyHyperlinkCellElement); } }