To reproduce:
- Add items with the same display member open the drop-down and select the second.
- Select another control on the form and then reopen the popup.
- The first item is selected.
Workaround:
class MyMultiColumnComboBox : RadMultiColumnComboBox
How to reproduce: public partial class Form1 : Form { public Form1() { InitializeComponent(); ThemeResolutionService.AllowAnimations = false; this.radGridView1.DataSource = this.GetData(); } private DataTable GetData() { DataTable dt = new DataTable(); dt.Columns.Add("Id", typeof(int)); dt.Columns.Add("Name", typeof(string)); dt.Rows.Add(1, "\u0002x09"); for (int i = 1; i < 10; i++) { dt.Rows.Add(i, "name"); } return dt; } private void radButton1_Click(object sender, EventArgs e) { GridViewSpreadExport spreadExporter = new GridViewSpreadExport(this.radGridView1); spreadExporter.FileExportMode = FileExportMode.CreateOrOverrideFile; SpreadExportRenderer exportRenderer = new SpreadExportRenderer(); spreadExporter.RunExport(@"..\..\exported-file.xlsx", exportRenderer); } } ArgumentException with clarification similar to "'\u001f', hexadecimal value 0x1F, is an invalid character." is thrown when trying to export document containing characters which are not supported in XML document - such as some control characters like 0x00, 0x1F, 0x1B, etc. Such characters are described in the XML specification here: https://www.w3.org/TR/xml/#charsets. Although the escaped strings are not supported (see https://feedback.telerik.com/Project/184/Feedback/Details/190228 ), the library could prevent the exception and export the document successfully by skipping such characters. Workaround: remove such characters before the export. Check the following StackOverflow answer for some ideas on code for replacing the characters: http://stackoverflow.com/a/14323524/259206
How to reproduce: bind the grid using the code snippet below and enter name in the SearchRow public partial class RadForm1 : Telerik.WinControls.UI.RadForm { public RadForm1() { InitializeComponent(); this.radGridView1.DataSource = this.GetData(); this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill; this.radGridView1.AllowSearchRow = true; this.radGridView1.MasterView.TableSearchRow.InitialSearchResultsTreshold = 0; this.radGridView1.MasterView.TableSearchRow.SearchResultsGroupSize = int.MaxValue;; } private DataTable GetData() { DataTable dt = new DataTable(); dt.Columns.Add("Id", typeof(int)); dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("Date", typeof(DateTime)); dt.Columns.Add("Bool", typeof(bool)); dt.Columns.Add("Description", typeof(string)); for (int i = 0; i < 2000; i++) { for (int j = 0; j < 5; j++) { dt.Rows.Add(i, "Name " + j, DateTime.Now.AddDays(i), i % 2 == 0 , "Description " + i); } } return dt; } } Workaround: in the search row, set the InitialSearchResultsTreshold property to 0 and the SearchResultsGroupSize property to int.MaxValue public RadForm1() { InitializeComponent(); this.radGridView1.DataSource = this.GetData(); this.radGridView1.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill; this.radGridView1.AllowSearchRow = true; this.radGridView1.MasterView.TableSearchRow.SearchProgressChanged += TableSearchRow_SearchProgressChanged; this.radGridView1.MasterView.TableSearchRow.InitialSearchResultsTreshold = 0; this.radGridView1.MasterView.TableSearchRow.SearchResultsGroupSize = int.MaxValue; }
To reproduce: please refer to the attached sample project and follow the steps from the attached gif file. 1. Run the project and type "hana" in the second filter cell. You will notice that after a few seconds the input is handled and the grid is filtered. Workaround: use RadVirtualGrid instead. https://docs.telerik.com/devtools/winforms/virtualgrid/overview https://docs.telerik.com/devtools/winforms/virtualgrid/filtering/filtering Second workaround: https://docs.telerik.com/devtools/winforms/gridview/filtering/how-to/filter-on-enter
Changing the DataSource or scrolling are slow. Create a grid with more than 20 columns and add 5K rows for example. Maximize the form and try to scroll with mouse wheel. You will notice that the scrolling performance is worse compared to the normal state of the form with less visible visual elements. Workaround: this.radGridView1.EnableFastScrolling = true; and use the scrollbar's thumb Second workaround: use paging: https://docs.telerik.com/devtools/winforms/gridview/paging/overview Thus, you will display as many rows as possible to display on the screen per page. Instead of scrolling, you will navigate through pages.
To reproduce: - Filter a self-referencing grouped grid. Workaround: private void _rgvFreeCodeValues_FilterChanged(object sender, GridViewCollectionChangedEventArgs e) { foreach (var row in RgvFreeCodeValues.Rows) row.IsExpanded = false; } private void _rgvFreeCodeValues_FilterChanging(object sender, GridViewCollectionChangingEventArgs e) { foreach (var row in RgvFreeCodeValues.Rows) row.IsExpanded = true; }
This was working this way in 2017 then we changer it so all rows are affected. Bot modes should be supported.
Dears
Looks like after last Telerik update to 2019.1.117.40 lilter do digits/numbers is not working any more. When I'd like filter out on decimal columns (or even text column but with linked decimal/int values) I get no results, no rows.
With text columns all is ok.
BR
To reproduce: Initially, the row at index 0 is white, when you move it to index 5 it is still white until you hover it: public RadForm1() { InitializeComponent(); this.radGridView1.Columns.Add("Data"); for (int i = 0; i < 100; i++) { this.radGridView1.Rows.Add(i); } this.radGridView1.EnableAlternatingRowColor = true; this.radGridView1.TableElement.AlternatingRowColor = Color.Aqua; } private void radButton1_Click(object sender, EventArgs e) { this.radGridView1.Rows.Move(0, 5); } Workaround: private void radButton1_Click(object sender, EventArgs e) { this.radGridView1.Rows.Move(0, 5); this.radGridView1.Rows[5].InvalidateRow(); }
GridTimeColumn will display and allow user to edit with TimeEditor Time and Time-Span column types from the Database.
If current culture uses comma as delimeter, the MS Excel cannot handle the decimal values in a right way.
To reproduce: the issue is reproducible in the Demo application >> GridView >> Tabbed Views. Follow the steps from the gif file. Workaround: private void radGridView1_ViewCellFormatting(object sender, CellFormattingEventArgs e) { GridDetailViewCellElement cell = e.CellElement as GridDetailViewCellElement; if (cell != null) { cell.MinSize = new Size(e.CellElement.Parent.Size.Width - this.radGridView1.TableElement.GroupIndent , 10); } }
How to reproduce: check the code snippet below and the attached video. public partial class Form1 : Form { public Form1() { InitializeComponent(); this.SetupGrid(); this.radGridView1.Dock = DockStyle.Fill; this.radGridView1.UseScrollbarsInHierarchy = true; } private void SetupGrid() { BindingList<Teacher> teachers = new BindingList<Teacher>(); BindingList<Student> students = new BindingList<Student>(); for (int i = 1; i <= 2; i++) { teachers.Add(new Teacher { TeacherId = i, TeacherFirstName = "FirstName " + i, TeacherLastName = "FirstName " + i, }); for (int j = 1; j <= 3; j++) { students.Add(new Student { SudentId = j, TeacherId = i, SudentFirstName = "Student " + j, SudentLastName = "LastName " + j, }); } } this.radGridView1.Templates.Clear(); this.radGridView1.DataSource = null; this.radGridView1.DataSource = teachers; this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill; GridViewTemplate template = new GridViewTemplate(); template.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill; template.DataSource = students; this.radGridView1.MasterTemplate.Templates.Add(template); GridViewRelation relation = new GridViewRelation(radGridView1.MasterTemplate); relation.ChildTemplate = template; relation.RelationName = "TeacherStudents"; relation.ParentColumnNames.Add("TeacherId"); relation.ChildColumnNames.Add("TeacherId"); this.radGridView1.Relations.Add(relation); this.radGridView1.ChildViewExpanded += RadGridView1_ChildViewExpanded1; } private void RadGridView1_ChildViewExpanded1(object sender, ChildViewExpandedEventArgs e) { } private void radButton1_Click(object sender, EventArgs e) { this.radGridView1.SaveLayout("..\\..\\save.xml"); } private void radButton2_Click(object sender, EventArgs e) { this.radGridView1.LoadLayout("..\\..\\save.xml"); } } public class Teacher { public int TeacherId { get; set; } public string TeacherFirstName { get; set; } public string TeacherLastName { get; set; } } public class Student { public int SudentId { get; set; } public int TeacherId { get; set; } public string SudentFirstName { get; set; } public string SudentLastName { get; set; } } Workaround: prevent the child templates from serializing public class MyRadGridView : RadGridView { public override string ThemeClassName { get { return typeof(RadGridView).FullName; } } public override void SaveLayout(string fileName) { MyGridViewLayoutSerializer ser = new MyGridViewLayoutSerializer(this.XmlSerializationInfo); using (XmlTextWriter writer = new XmlTextWriter(fileName, Encoding.UTF8)) { writer.Formatting = Formatting.Indented; writer.WriteStartElement("RadGridView"); ser.WriteObjectElement(writer, this); } } } public class MyGridViewLayoutSerializer : GridViewLayoutSerializer { public MyGridViewLayoutSerializer(ComponentXmlSerializationInfo componentSerializationInfo) : base(componentSerializationInfo) { } protected override bool ShouldSerializeValue(object component, PropertyDescriptor property, PropertySerializationMetadata overwriteMetadata) { if (property.Name == "Templates") { return false; } return base.ShouldSerializeValue(component, property, overwriteMetadata); } }
To reproduce: use the following code snippet: Sub New() InitializeComponent() Dim view As New ColumnGroupsViewDefinition() view.ColumnGroups.Add(New GridViewColumnGroup("Customer Contact")) view.ColumnGroups.Add(New GridViewColumnGroup("Details")) view.ColumnGroups(1).Groups.Add(New GridViewColumnGroup("Address")) view.ColumnGroups(1).Groups.Add(New GridViewColumnGroup("Contact")) view.ColumnGroups(0).Rows.Add(New GridViewColumnGroupRow()) view.ColumnGroups(0).Rows(0).ColumnNames.Add("CompanyName") view.ColumnGroups(0).Rows(0).ColumnNames.Add("ContactName") view.ColumnGroups(0).Rows(0).ColumnNames.Add("ContactTitle") view.ColumnGroups(1).Groups(0).Rows.Add(New GridViewColumnGroupRow()) view.ColumnGroups(1).Groups(0).Rows(0).ColumnNames.Add("Address") view.ColumnGroups(1).Groups(0).Rows(0).ColumnNames.Add("City") view.ColumnGroups(1).Groups(0).Rows(0).ColumnNames.Add("Country") view.ColumnGroups(1).Groups(1).Rows.Add(New GridViewColumnGroupRow()) view.ColumnGroups(1).Groups(1).Rows(0).ColumnNames.Add("Phone") view.ColumnGroups(1).Groups(1).Rows(0).ColumnNames.Add("Fax") RadGridView1.ViewDefinition = view End Sub Private Sub RadForm1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.CustomersTableAdapter.Fill(Me.NwindDataSet.Customers) Me.RadGridView1.BestFitColumns(BestFitColumnMode.AllCells) RadGridView1.Columns("Fax").IsVisible = False RadGridView1.Columns("Phone").IsVisible = False Dim spreadExporter As GridViewSpreadExport = New GridViewSpreadExport(Me.RadGridView1) Dim exportRenderer As New SpreadExportRenderer() spreadExporter.HiddenColumnOption = Export.HiddenOption.ExportAsHidden spreadExporter.FreezeHeaderRow = True spreadExporter.ExportGroupedColumns = True spreadExporter.ExportChildRowsGrouped = True spreadExporter.ExportVisualSettings = True spreadExporter.ExportHierarchy = True spreadExporter.ExportViewDefinition = True spreadExporter.ExportFormat = SpreadExportFormat.Xlsx Dim fileName = "..\..\export" & DateTime.Now.ToLongTimeString().Replace(":", "_") & ".xlsx" spreadExporter.RunExport(fileName, exportRenderer) Process.Start(fileName) End Sub Workaround: instead of hiding all the columns inside a group, hide the entire group: Sub New() InitializeComponent() Dim view As New ColumnGroupsViewDefinition() view.ColumnGroups.Add(New GridViewColumnGroup("Customer Contact")) view.ColumnGroups.Add(New GridViewColumnGroup("Details")) view.ColumnGroups(1).Groups.Add(New GridViewColumnGroup("Address")) view.ColumnGroups(1).Groups.Add(New GridViewColumnGroup("Contact")) view.ColumnGroups(0).Rows.Add(New GridViewColumnGroupRow()) view.ColumnGroups(0).Rows(0).ColumnNames.Add("CompanyName") view.ColumnGroups(0).Rows(0).ColumnNames.Add("ContactName") view.ColumnGroups(0).Rows(0).ColumnNames.Add("ContactTitle") view.ColumnGroups(1).Groups(0).Rows.Add(New GridViewColumnGroupRow()) view.ColumnGroups(1).Groups(0).Rows(0).ColumnNames.Add("Address") view.ColumnGroups(1).Groups(0).Rows(0).ColumnNames.Add("City") view.ColumnGroups(1).Groups(0).Rows(0).ColumnNames.Add("Country") view.ColumnGroups(1).Groups(1).Rows.Add(New GridViewColumnGroupRow()) view.ColumnGroups(1).Groups(1).Rows(0).ColumnNames.Add("Phone") view.ColumnGroups(1).Groups(1).Rows(0).ColumnNames.Add("Fax") RadGridView1.ViewDefinition = view view.ColumnGroups(1).Groups.Last().IsVisible=False End Sub
To reproduce: - Use a column with numbers stored as strings. - Set the data type to decimal - The columns should be sorted according to the number value not alphabetically. Workaround: var col = new GridViewTextBoxColumn(); col.DataTypeConverter = new DecimalConverter(); col.FieldName = "Dosage"; col.UseDataTypeConverterWhenSorting = true; col.DataType = typeof(decimal); radGridView1.Columns.Add(col); public class DecimalConverter : TypeConverter { public override bool CanConvertTo(ITypeDescriptorContext context, Type destination_type) { if (destination_type == typeof(decimal)) { return true; } return base.CanConvertTo(context, destination_type); } public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destination_type) { if (destination_type == typeof(decimal)) { return decimal.Parse(value.ToString()); } return base.ConvertTo(context, culture, value, destination_type); } }
Workaround: private void radGridView1_ConditionalFormattingFormShown(object sender, EventArgs e) { ConditionalFormattingForm f = sender as ConditionalFormattingForm; if (f != null) { RadPropertyGrid radPropertyGridProperties = f.Controls["radPropertyGridProperties"] as RadPropertyGrid; radPropertyGridProperties.ItemFormatting += radPropertyGridProperties_ItemFormatting; radPropertyGridProperties.ItemFormatting += radPropertyGridProperties_ItemFormatting; } } private void radPropertyGridProperties_ItemFormatting(object sender, PropertyGridItemFormattingEventArgs e) { if (e.Item.Label=="CellFont") { e.Item.Label = "aaa"; } }
This can be used for large amounts of data. Check this - https://docs.telerik.com/devtools/document-processing/libraries/radpdfprocessing/formats-and-conversion/pdf/pdfstreamwriter/pdfstreamwriter