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); } }
The CellFormating example of RadGridView formats in red color not only FirstName column's cells.
Make possible users easily to change the behavior of replacing the null value with empty string. Workaround: DataTable table = new DataTable("table"); table.Columns.Add("ID", typeof(int)); DataColumn col = table.Columns.Add("Name", typeof(string)); col.AllowDBNull = false; col.DefaultValue = string.Empty; table.ColumnChanging += new DataColumnChangeEventHandler(table_ColumnChanging); this.radGridView1.DataSource = table; private void table_ColumnChanging(object sender, DataColumnChangeEventArgs e) { if (!e.Column.AllowDBNull && (e.ProposedValue == DBNull.Value || e.ProposedValue == null) && e.Column.DataType == typeof(string)) { e.ProposedValue = string.Empty; } }
To reproduce: - Open the Excel Like Filtering demo - Open a the excel like filtering dialog and select Available Filter > Custom - Select Contains in both drop downs and press OK
The following code exhibits the problem. All you have to do is click the Wrapper column cell and bring down the dropdown. Then select the Phase column. You will get the app to crash in the FilterWrappers method. namespace RadControlsWinFormsApp2 { public partial class Form1 : Form { private String[] dataPhases = null; private String[] dataWrappers = null; public class Data { public Data(int ID, string Phase, int Wrapper) { this.ID = ID; this.Phase = Phase; this.Wrapper = Wrapper; } public int ID { get; set; } public String Phase { get; set; } public int Wrapper { get; set; } } public Form1() { InitializeComponent(); this.radGridView1.DataSource = new Data[] { new Data(1, "A", 1), new Data(2, "B", 2) }; } private void Form1_Load(object sender, EventArgs e) { GridViewComboBoxColumn columnPhase = radGridView1.Columns["PHASE"] as GridViewComboBoxColumn; dataPhases = new String[] { "A", "B", "C", "A/B/C" }; GridViewComboBoxColumn columnWrapper = radGridView1.Columns["WRAPPER"] as GridViewComboBoxColumn; dataWrappers = new String[] { "", "1", "2" }; columnWrapper.DataSource = dataWrappers; columnPhase.DataSource = dataPhases; } private void radGridView1_CellEditorInitialized(object sender, Telerik.WinControls.UI.GridViewCellEventArgs e) { if (e.Column is GridViewComboBoxColumn) { RadDropDownListEditor editor = e.ActiveEditor as RadDropDownListEditor; if (editor != null) { RadDropDownListEditorElement editorElement = (RadDropDownListEditorElement)editor.EditorElement; editorElement.Filter = null; } } switch (e.Column.Name) { case "WRAPPER": { GridViewComboBoxColumn cbc = e.Column as GridViewComboBoxColumn; cbc.DataSource = dataWrappers; RadDropDownListEditor editor = e.ActiveEditor as RadDropDownListEditor; if (editor != null) { RadDropDownListEditorElement editorElement = (RadDropDownListEditorElement)editor.EditorElement; editorElement.Filter = FilterWrappers; } } break; case "PHASE": { GridViewComboBoxColumn cbc = e.Column as GridViewComboBoxColumn; cbc.DataSource = dataPhases; } break; } } private bool FilterWrappers(RadListDataItem item) { int nWrapper = 0; if (item.Value.ToString() != String.Empty) nWrapper = Convert.ToInt32(item.Value); return true; } } }
The following HTMLViewDefinition has a wrong layout when run: HtmlViewDefinition view = new HtmlViewDefinition(); view.RowTemplate.Rows.Add(new RowDefinition()); view.RowTemplate.Rows.Add(new RowDefinition()); view.RowTemplate.Rows.Add(new RowDefinition()); view.RowTemplate.Rows[0].Cells.Add(new CellDefinition("column0", 0, 1, 1)); view.RowTemplate.Rows[0].Cells.Add(new CellDefinition("column1", 0, 1, 3)); view.RowTemplate.Rows[0].Cells.Add(new CellDefinition("column2", 0, 1, 1)); view.RowTemplate.Rows[1].Cells.Add(new CellDefinition("column3", 0, 1, 2)); view.RowTemplate.Rows[1].Cells.Add(new CellDefinition("column4", 0, 1, 1)); view.RowTemplate.Rows[2].Cells.Add(new CellDefinition("column5", 0, 1, 1)); The layout puts column5 over column1. A possible workaround would be to refresh the rows in the grid's SizeChanged event handler: private void RadGridView1_SizeChanged(object sender, EventArgs e) { radGridView1.TableElement.ViewElement.UpdateRows(true); }
FIX. RadGridView - seting the HeaderImage of a column in the PropertyBuilder results in Object Reference message
Consider the iTunes Artist mode grid http://www.telerik.com/forums/itunes-like-grid
There should be an option which allows the users to turn off the escaping of special characters when exporting to ExcelML.
Allow setting the CurrentColumn/CurrentCell in the RowValidaging event