Hi, I have a master table and a detail table. When I export to Excel I get an extra cell inserted in the first column for the detail table view records only. If you look at the attached image you will see cells A3 and A6 are empty and appear to be associated with the detail table.
Any insights as to what I might be overlooking and how to fix this would be greatly appreciated.
Code behind...
Any insights as to what I might be overlooking and how to fix this would be greatly appreciated.
Radgrid defintion...
<telerik:RadGrid ID="rgCourseInventoryList" runat="server" CssClass="RadGrid" GridLines="None" AllowPaging="True" PageSize="10"
AllowSorting="True" AutoGenerateColumns="False" ShowStatusBar="true" OnDetailTableDataBind="rgCourseInventoryList_DetailTableDataBind" OnNeedDataSource="rgCourseInventoryList_NeedDataSource"> <MasterTableView CommandItemDisplay="TopAndBottom" DataKeyNames="CourseId" AutoGenerateColumns="false" HierarchyLoadMode="ServerBind" HierarchyDefaultExpanded="true" ClientDataKeyNames="CourseId"> <CommandItemTemplate> <asp:ImageButton runat="server" ImageUrl="../Images/Icons/addrecord.gif" OnClientClick="return ShowInsertForm();" ID="ibInsertSection" ToolTip="<%$ Resources:ui_labels, ibInsertSection %>"/> <asp:LinkButton runat="server" ID="lbAddCourse" OnClientClick="return ShowInsertForm();" Text="<%$ Resources:ui_messages, msgAddNewRecord %>"></asp:LinkButton> <asp:ImageButton runat="server" ImageUrl="../Images/Icons/excel.png" ID="ibExportToExcel" ToolTip="<%$ Resources:ui_labels, ibInsertSection %>"/> <asp:LinkButton runat="server" ID="lbExportToExcel" Text="<%$ Resources:ui_messages, msgExcel %>" CommandName="ExportToExcel"></asp:LinkButton> </CommandItemTemplate> <Columns> <telerik:GridEditCommandColumn UniqueName="gecEditCourse" EditImageUrl="../Images/Icons/edit.png" ButtonType="ImageButton" ItemStyle-Width="10px" EditText="<%$ Resources:ui_labels, ibEditCourse %>"> </telerik:GridEditCommandColumn> <telerik:GridBoundColumn UniqueName="CourseCode" HeaderText="<%$Resources:ui_labels, gbcCourseCode %>" DataField="SISCourseCode"> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="CourseType" HeaderText="<%$Resources:ui_labels, gbcCourseType %>" DataField="SISCourseType"> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="CourseTitle" DataField="SISCourseTitle" Visible="false"> </telerik:GridBoundColumn> <telerik:GridTemplateColumn UniqueName="gtcTitle" HeaderText="<%$ Resources:ui_labels, gtcTitle %>" ItemStyle-VerticalAlign="Middle"> <ItemTemplate> <asp:Image ID="imgParent" runat="server" Visible="false" /> <asp:Label ID="lblParentTitle" runat="server"></asp:Label> <asp:Label ID="lblCourseTitle" runat="server"></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridBoundColumn UniqueName="CourseNote" HeaderText="<%$Resources:ui_labels, gbcNote %>" DataField="SISCourseNotes"> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="CourseExpired" DataField="SISCourseExpired" Visible="false"> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="ParentId" DataField="ParentId" Visible="false"> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="CourseStructure" HeaderText="<%$Resources:ui_labels, gbcCourseStructure %>" DataField="SISCourseStructure"> </telerik:GridBoundColumn> <telerik:GridTemplateColumn UniqueName="gtcShowDelete" ItemStyle-Width="10px"> <ItemTemplate> <asp:ImageButton runat="server" ImageUrl="../config/Images/Icons/delete.png" ID="ibShowDeleteForm" ToolTip="<%$ Resources:ui_labels, ibShowDeleteForm %>"/> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> <DetailTables> <telerik:GridTableView runat="server" DataKeyNames="ChildCourseId" Name="CrossListView" ClientDataKeyNames="ChildCourseId"> <Columns> <telerik:GridBoundColumn UniqueName="SISCourseCode" DataField="SISCourseCode"> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="SISCourseTitle" DataField="SISCourseTitle"> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="SISCourseExpired" DataField="SISCourseExpired" Visible="false"> </telerik:GridBoundColumn> </Columns> </telerik:GridTableView> </DetailTables> </MasterTableView> <ExportSettings ExportOnlyData="true" Excel-Format="ExcelML" IgnorePaging="true" OpenInNewWindow="true" HideStructureColumns="true"> </ExportSettings> <ClientSettings> <Selecting AllowRowSelect="true"></Selecting> <ClientEvents OnRowDblClick="RowDblClickEdit"></ClientEvents> </ClientSettings></telerik:RadGrid>
Code behind...
Protected Sub rgCourseInventory_ItemCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles rgCourseInventoryList.ItemCommand rgCourseInventoryList.MasterTableView.CommandItemSettings.ShowRefreshButton = False If (e.CommandName = RadGrid.ExportToExcelCommandName) Then _isExporting = True rgCourseInventoryList.ExportSettings.FileName = "Course list " + Date.Now.ToString("F") rgCourseInventoryList.ExportSettings.HideStructureColumns = True rgCourseInventoryList.MasterTableView.GetColumn("CourseTitle").Visible = True rgCourseInventoryList.MasterTableView.GetColumn("CourseTitle").HeaderText = Resources.ui_labels.gtcTitle.ToString rgCourseInventoryList.MasterTableView.ExportToExcel() ElseIf (e.CommandName = RadGrid.CancelCommandName) Then rgCourseInventoryList.MasterTableView.CommandItemSettings.ShowAddNewRecordButton = True rgCourseInventoryList.MasterTableView.CommandItemSettings.AddNewRecordText = Resources.ui_messages.msgAddNewRecord ElseIf (e.CommandName = RadGrid.InitInsertCommandName) Then rgCourseInventoryList.MasterTableView.CommandItemSettings.ShowAddNewRecordButton = False rgCourseInventoryList.MasterTableView.CommandItemSettings.AddNewRecordText = "" End IfEnd SubProtected Sub rgCourseInventoryList_ExcelMLExportRowCreated(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridExcelBuilder.GridExportExcelMLRowCreatedArgs) Handles rgCourseInventoryList.ExcelMLExportRowCreated If e.RowType = GridExportExcelMLRowType.DataRow Then If Not _isExcelConfigured Then 'Set Worksheet name e.Worksheet.Name = rcbAcademicUnitId.SelectedItem.Text + " " + Date.Now.ToString("MMM dd, yyyy") 'Set Column widths For Each column As ColumnElement In e.Worksheet.Table.Columns If e.Worksheet.Table.Columns.IndexOf(column) = 2 Or e.Worksheet.Table.Columns.IndexOf(column) = 3 Then 'set width 280 for Course Title and Notes column column.Width = Unit.Point(280) Else column.Width = Unit.Point(80) 'set width 80 to the rest of the columns End If Next 'Set Page options Dim pageSetup As PageSetupElement = e.Worksheet.WorksheetOptions.PageSetup pageSetup.PageLayoutElement.IsCenteredVertical = True pageSetup.PageLayoutElement.IsCenteredHorizontal = True pageSetup.PageMarginsElement.Left = 0.5 pageSetup.PageMarginsElement.Top = 0.5 pageSetup.PageMarginsElement.Right = 0.5 pageSetup.PageMarginsElement.Bottom = 0.5 pageSetup.PageLayoutElement.PageOrientation = PageOrientationType.Landscape 'Freeze panes e.Worksheet.WorksheetOptions.AllowFreezePanes = True e.Worksheet.WorksheetOptions.LeftColumnRightPaneNumber = 1 e.Worksheet.WorksheetOptions.TopRowBottomPaneNumber = 1 e.Worksheet.WorksheetOptions.SplitHorizontalOffset = 1 e.Worksheet.WorksheetOptions.SplitVerticalOffest = 1 e.Worksheet.WorksheetOptions.ActivePane = 2 _isExcelConfigured = True End If ElseIf e.RowType = GridExcelBuilder.GridExportExcelMLRowType.HeaderRow Then If e.Row.Cells.Count < 4 Then e.Worksheet.Table.Rows.Remove(e.Row) ' These are the detail column header record rows which insert empty cells into the spreadsheet so get rid of the whole row End If End IfEnd SubProtected Sub rgCourseInventoryList_ExcelMLExportStylesCreated(ByVal source As Object, ByVal e As Telerik.Web.UI.GridExcelBuilder.GridExportExcelMLStyleCreatedArgs) Handles rgCourseInventoryList.ExcelMLExportStylesCreated For Each style As StyleElement In e.Styles If style.Id = "headerStyle" Then style.InteriorStyle.Pattern = InteriorPatternType.Solid style.InteriorStyle.Color = System.Drawing.Color.Gray End If If style.Id = "alternatingItemStyle" Then style.InteriorStyle.Pattern = InteriorPatternType.Solid style.InteriorStyle.Color = System.Drawing.Color.LightGray End If If style.Id.Contains("itemStyle") Then style.InteriorStyle.Pattern = InteriorPatternType.Solid style.InteriorStyle.Color = System.Drawing.Color.White End If NextEnd Sub