ADD. RadGridView - add export of ViewDefiniton 1. Add export functionality for ColumnGroupsViewDefinition 2. Add export functionality for HtmlViewDefinition
Currently each grid is exported in a separate excel file with one or more sheets. It will be good to add the possibility to export a grid to a separate sheet in an existing file.
Add the ability to print all levels of a hierarchical RadGridView.
When exporting to HTML or PDF image columns should be exported properly.
WORKAROUND: The format of the file that ExportToExcelML creates is ExcelML which is an extended XML. If you do not want to receive the message, you have to change the extension of the file to ".xml". Even though the file will have an xml extension, it will still be associated with MS Excel and will be opened by Excel.There is a possibility to turn this warning message off on the client machine. You can read more about that on the following blog post - Excel 2007 Extension Warning On Opening Excel Workbook from a Web Site (http://blogs.msdn.com/b/vsofficedeveloper/archive/2008/03/11/excel-2007-extension-warning.aspx) Another workaround is to use Interop to open the file and excel and save it in XLSX format. However, this would require Administrator or Power User (http://msdn.microsoft.com/en-us/library/ms173186%28v=vs.80%29.aspx). A reference from COM to the corresponding office version should be added. Here is the code for saving: ExportToExcelML exporter = new ExportToExcelML(this.radGridView1); exporter.ExportVisualSettings = true; string tempPath = Path.GetTempPath(); tempPath += "tempgrid.xls"; exporter.RunExport(tempPath); Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application(); if (app == null) { Console.WriteLine("EXCEL could not be started. Check that your office installation and project references are correct."); return; } app.Visible = false; app.Interactive = false; Microsoft.Office.Interop.Excel.Workbook wb = app.Workbooks.Open(tempPath); string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); desktopPath += "\\grid.xlsx"; wb.SaveAs(desktopPath, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault); wb.Close(); app.Quit(); Marshal.ReleaseComObject(wb); Marshal.ReleaseComObject(app); File.Delete(tempPath);
Transfer the pinned status of grid's columns and rows to the exported excel file.
Add Page format functionality (like header, footer, page number) when you export a RadGridView to pdf similar to RadPrintDocument. http://www.telerik.com/help/winforms/tpf-printing-support-radprintdocument-header-and-footer.html
Currently all exported cells are static.
Currently it is not possible to insert custom worksheets (for example notes or a cover page) when exporting via ExportToExcelML
To reproduce: - add RadGridView with several columns and rows and export the grid to pdf file. - open the exported PDF file with Foxit Reader version 2.2. The opened file is blank.
Description: use RadGridView with a lot of columns (e.g. 50) that the horizontal scroll-bar appears. When exporting to PDF, the columns should be rendered correctly like in RadGridView Multi-Page printing.
To reproduce: - Bind the grid to a binding list of custom property which has a bool value. - Add a filter that shows only false values. - Change some (more than one) of the underlying values to true. - You will notice that the rows with the new value are still visible.
To reproduce: Add a RadGridView and fill it with data. Set the first column's IsVisible property to false. Right click over the row to Copy the row content and paste it in Excel. All data is in a single cell. The Clipboard content does not contain the corresponding <TABLE><TR> tags. Note: if the last columns is hidden, the line-breaks in the copied text are missing. Workaround: create custom RadGridView and replace the wrong content in the Clipboard: public class CustomGrid : RadGridView { protected override RadGridViewElement CreateGridViewElement() { return new CustomRadGridViewElement(); } } public class CustomRadGridViewElement : RadGridViewElement { protected override MasterGridViewTemplate CreateTemplate() { return new CustomMasterGridViewTemplate(); } } public class CustomMasterGridViewTemplate : MasterGridViewTemplate { public override void Copy() { base.Copy(); if (Clipboard.ContainsData(DataFormats.Html)) { string data = Clipboard.GetData(DataFormats.Html).ToString(); StringBuilder sb = new StringBuilder(data); if (!data.Contains("<TABLE>")) { int insertIndex = data.IndexOf("<TD>"); sb.Insert(insertIndex, "<TABLE><TR>"); } else if (!data.Contains("</TABLE>")) { int insertIndex = data.LastIndexOf("<TD>"); sb.Insert(insertIndex, "</TR></TABLE>"); } Clipboard.SetData(DataFormats.Html, sb.ToString()); } } }
The PDF exporting of RadGridView does not work correctly for Arabic text. The exported result revers the Arabic text.
RadGridView - does not scroll correctly when AutoSizeRows and EnableFastScrolling are set to true. Code to reproduce: radGridView1.BeginUpdate(); radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill; radGridView1.AutoSizeRows = true; radGridView1.EnableFastScrolling = true; DataTable dt = new DataTable(); dt.Columns.Add("A"); dt.Columns.Add("B"); dt.Columns.Add("C"); for (int i = 0; i < 50; i++) { string[] array = new string[3]; array[0] = i.ToString(); array[1] = i.ToString(); array[2] = i.ToString(); dt.Rows.Add(array); } radGridView1.DataSource = dt; radGridView1.EndUpdate();
1. Create a new project with RadGridView and setup 4 level hierarchy. 2. Add a button and handle its Click event. 3. In the Click event handler expand all rows. Surround the code with calls to Begin/EndUpdate methods of RadGridView or GridViewTemplate. 4. Run the application and click the button. Workaround use the Begin.EndUpdate method of the TableElement, not the grid control
To reproduce : add a GridViewMultiComboBoxColumn and use the following code snippet: Private Sub RadGridView1_CellEditorInitialized(sender As Object, e As GridViewCellEventArgs) Handles RadGridView1.CellEditorInitialized Dim multiComboElement As RadMultiColumnComboBoxElement = TryCast(Me.RadGridView1.ActiveEditor, RadMultiColumnComboBoxElement) If multiComboElement IsNot Nothing Then multiComboElement.AutoFilter = True If multiComboElement.EditorControl.MasterTemplate.FilterDescriptors.Count = 0 Then Dim autoFilter As New FilterDescriptor autoFilter.PropertyName = multiComboElement.DisplayMember autoFilter.Operator = FilterOperator.StartsWith multiComboElement.EditorControl.MasterTemplate.FilterDescriptors.Add(autoFilter) multiComboElement.SelectedIndex = -1 multiComboElement.DropDownHeight = 200 multiComboElement.DropDownWidth = 800 multiComboElement.EditorControl.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill End If End If End Sub The attached gif file illustrates the behavior.
To reproduce: -Add a RadGridView and use the following code snippet: public Form1() { InitializeComponent(); //add GridViewCheckBoxColumn with DataType to BOOL GridViewCheckBoxColumn autoTestingselectColumn = new GridViewCheckBoxColumn(); autoTestingselectColumn.DataType = typeof(bool); autoTestingselectColumn.Name = "AutomatedTestingSelectColumn"; autoTestingselectColumn.FieldName = "AutomatedTestingSelectColumn"; autoTestingselectColumn.HeaderText = "Automated Testing Select"; radGridView1.MasterTemplate.Columns.Add(autoTestingselectColumn); //add GridViewCheckBoxColumn with DataType to INT GridViewCheckBoxColumn startTestingColumn = new GridViewCheckBoxColumn(); startTestingColumn.DataType = typeof(int); startTestingColumn.Name = "StartTestingColumn"; startTestingColumn.FieldName = "StartTestingColumn"; startTestingColumn.HeaderText = "StartTesting"; radGridView1.MasterTemplate.Columns.Add(startTestingColumn); List<Item> items = new List<Item>(); for (int i = 0; i < 5; i++) { items.Add(new Item(Guid.NewGuid().ToString(),"Name"+i)); } this.radGridView1.DataSource = items; //set the AutoSizeColumnsMode property to Fill this.radGridView1.AutoSizeColumnsMode = GridViewAutoSizeColumnsMode.Fill; } public class Item { public string UniqueIdentifier { get; set; } public string Name { get; set; } public Item(string uniqueIdentifier, string name) { this.UniqueIdentifier = uniqueIdentifier; this.Name = name; } } -Run the project. As a result 4 columns are displayed: two programmatically added and two coming from the data source. -Now open the Property Builder at design time and add a GridViewCheckBoxColumn. -Run the project. As a result, 5 columns are displayed: one added at design time, two programmatically added, two coming from the data source. -Open the Property Builder again and delete the GridViewCheckBoxColumn. -Run the project. You will notice that only two columns are displayed. The columns, coming from the data source are not generated. Workaround: delete columns using the Columns collection at design time, instead of using the property Builder.