Hi, I am pretty new to using the Telerik controls and am trying to clean up some pre-existing code. It seems pretty straightforward as I am just exporting a grid to pdf. The issue I am having is that I can load the page, not resize any columns, click the export to pdf button and my grid formats and looks fantastic. if i resize ANY of the columns though, not all my columns show up. This even happens if i resize and make my columns smaller. Help?
<telerik:RadGrid ID="grdEmployee" runat="server" AllowPaging="True" AllowSorting="True" GroupingEnabled="False" AllowMultiRowSelection="True" GridLines="None" AutoGenerateColumns="False" PageSize ="20" AllowCustomPaging="True" Height="400px" CellSpacing="0" OnPageIndexChanged="grdEmployee_PageIndexChanged" OnPageSizeChanged="grdEmployee_PageSizeChanged" OnItemCommand="grdEmployee_ItemCommand" OnItemCreated="grdEmployee_ItemCreated" OnPreRender="grdEmployee_PreRender" OnSortCommand="grdEmployee_SortCommand" OnExportCellFormatting="grdEmployee_ExportCellFormatting" meta:resourcekey="grdEmployee"> <ClientSettings AllowColumnHide="True" AllowColumnsReorder="True" ReorderColumnsOnClient="true"> <Selecting AllowRowSelect="True" /> <Scrolling AllowScroll="True" EnableVirtualScrollPaging="True" UseStaticHeaders="True" /> <Resizing AllowColumnResize="True" AllowResizeToFit="True" /> </ClientSettings> <MasterTableView AllowNaturalSort="False" DataKeyNames="EmployeeId" EnableHeaderContextMenu="False"> <NestedViewTemplate> <asp:Panel ID="pnlEmployeeDetails" runat="server" CssClass="GridDetailPanel"> <table> <tr> <td class="gdpLabelColumn"> <asp:Label ID="lblDetailFirstNameText" runat="server" meta:resourceKey="lblDetailFirstNameText" /> </td> <td class="gdpValueColumn" colspan="3"> <asp:Label ID="lblDetailFirstNameValue" runat="server" /> <asp:Label ID="lblDetailMiddleInitialValue" runat="server" /> <asp:Label ID="lblDetailLastNameValue" runat="server" /> </td> <td rowspan="5"> <!--photo place holder--> </td> </tr> <tr> <td class="gdpLabelColumn"> <asp:Label ID="lblDetailBirthDateText" runat="server" meta:resourceKey="lblDetailBirthDateText" /> </td> <td class="gdpValueColumn"> <asp:Label ID="lblDetailBirthDateValue" runat="server" /> </td> <td class="gdpLabelColumn"> <asp:Label ID="lblDetailGenderText" runat="server" meta:resourceKey="lblDetailGenderText" /> </td> <td class="gdpValueColumn"> <asp:Label ID="lblDetailGenderValue" runat="server" /> </td> </tr> <tr> <td class="gdpLabelColumn"> <asp:Label ID="lblDetailHireDateText" runat="server" meta:resourceKey="lblDetailHireDateText" /> </td> <td class="gdpValueColumn"> <asp:Label ID="lblDetailHireDateDetailValue" runat="server" /> </td> <td class="gdpLabelColumn"> <asp:Label ID="lblDetailTerminationDateText" runat="server" meta:resourceKey="lblDetailTerminationDateText" /> </td> <td class="gdpValueColumn"> <asp:Label ID="lblDetailTerminationDateValue" runat="server" /> </td> </tr> <tr> <td class="gdpLabelColumn"> <asp:Label ID="lblDetailSiteText" runat="server" meta:resourceKey="lblDetailSiteText" /> </td> <td class="gdpValueColumn"> <asp:Label ID="lblDetailSiteValue" runat="server" /> </td> <td class="gdpLabelColumn"> <asp:Label ID="lblDetailDepartmentText" runat="server" meta:resourceKey="lblDetailDepartmentText" /> </td> <td class="gdpValueColumn"> <asp:Label ID="lblDetailDepartmentValue" runat="server" /> </td> </tr> <tr> <td class="gdpLabelColumn"> <asp:Label ID="lblDetailClassificationText" runat="server" meta:resourceKey="lblDetailClassificationText" /> </td> <td class="gdpValueColumn"> <asp:Label ID="lblDetailClassificationValue" runat="server" /> </td> <td class="gdpLabelColumn"> <asp:Label ID="lblDetailEmployeeGroupText" runat="server" meta:resourceKey="lblDetailEmployeeGroupText" /> </td> <td class="gdpValueColumn"> <asp:Label ID="lblDetailEmployeeGroupValue" runat="server" /> </td> </tr> </table> </asp:Panel> </NestedViewTemplate> <CommandItemSettings ExportToPdfText="Export to PDF" ShowAddNewRecordButton="False" ShowRefreshButton="false" /> <RowIndicatorColumn FilterControlAltText="Filter RowIndicator column" /> <ExpandCollapseColumn FilterControlAltText="Filter ExpandColumn column" Visible="True" /> <Columns> <telerik:GridClientSelectColumn UniqueName="Select"> <HeaderStyle HorizontalAlign="Left" Width="20px" /> </telerik:GridClientSelectColumn> <telerik:GridImageColumn UniqueName="CombinedEmployeeStatus" DataAlternateTextField="CombinedEmployeeStatus" DataImageUrlFields="EnabledStatus,ActiveStatus" DataImageUrlFormatString="~/Style/Images/Grid/Employee {0} {1}.bmp" ImageAlign="Middle" ImageHeight="16px" ImageWidth="16px"> <HeaderStyle Width="20px" /> </telerik:GridImageColumn> <telerik:GridTemplateColumn UniqueName="FirstName" SortExpression="FirstName" meta:resourceKey="grdEmployee_FirstName"> <ItemTemplate> <asp:HyperLink ID="hlkSelect" runat="server" ForeColor="#3B3B3B" Text='<%# DataBinder.Eval(Container, "DataItem.FirstName") %>' meta:resourceKey="hlkSelect" /> </ItemTemplate> <HeaderStyle Width="15%" /> </telerik:GridTemplateColumn> <telerik:GridBoundColumn UniqueName="MiddleInitial" DataField="MiddleInitial" SortExpression="MiddleInitial" meta:resourceKey="grdEmployee_MiddleInitial"> <HeaderStyle Width="35px" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="LastName" DataField="LastName" SortExpression="LastName" meta:resourceKey="grdEmployee_LastName"> <HeaderStyle Width="25%" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="EmployeeNumber" DataField="EmployeeNumber" SortExpression="EmployeeNumber" meta:resourceKey="grdEmployee_EmployeeNumber"> <HeaderStyle Width="15%" /> </telerik:GridBoundColumn> <telerik:GridBoundColumn UniqueName="SSN" DataField="SSN" SortExpression="SSN" meta:resourceKey="grdEmployee_SSN" /> <telerik:GridBoundColumn UniqueName="BirthDate" Display="False" DataField="BirthDate" SortExpression="BirthDate" meta:resourceKey="grdEmployee_BirthDate" /> </Columns> <SortExpressions> <telerik:GridSortExpression FieldName="LastName" /> </SortExpressions> </MasterTableView> <PagerStyle Mode="Slider" /> <FilterMenu EnableImageSprites="False" /> <HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Default" /></telerik:RadGrid>#region Grid Events/// <summary>/// Handles the ItemCreated event of the grdEmployee control./// </summary>/// <param name="sender">The source of the event.</param>/// <param name="e">The <see cref="Telerik.Web.UI.GridItemEventArgs"/> instance containing the event data.</param>protected void grdEmployee_ItemCreated(object sender, GridItemEventArgs e){ //set the grid column properties if ((e.Item is GridDataItem) && (_gridDataExport == false)) { GridDataItem dataItem = e.Item as GridDataItem; string employeeId = dataItem.GetDataKeyValue(_GRID_DATAKEY).ToString(); //Check the selected item, if any on the current page MarkSelectedItems(dataItem, employeeId); //Add the link to navigate to employee record HyperLink selectLink = (HyperLink)dataItem.FindControl("hlkSelect"); selectLink.NavigateUrl = AptaFundUrl.ToEmployeeEdit() + "&EmployeeId=" + employeeId; } else if ((e.Item is GridDataItem) && (_gridDataExport == true) && (_gridDataPdfExport == true))//pdf export { //pdf export column formatting e.Item.Style["text-align"] = "left"; }}/// <summary>/// Handles the SortCommand event of the grdEmployee control./// </summary>/// <param name="sender">The source of the event.</param>/// <param name="e">The <see cref="Telerik.Web.UI.GridSortCommandEventArgs"/> instance containing the event data.</param>protected void grdEmployee_SortCommand(object sender, GridSortCommandEventArgs e){ try { //cancel the current sort e.Canceled = true; GridSortExpression sortExpression = new GridSortExpression(); //get the new sort field name sortExpression.FieldName = e.SortExpression; //set the new sort order ascending/descending sortExpression.SortOrder = e.NewSortOrder; //store the sort expression, which can be used when they come back from another screen StoreSortExpressionToSession(sortExpression); //make sure only selected items are stored.(the user might have changed the selections this.StoreGridSelectedItems(this.grdEmployee); //bind the gird with new sort this.DoSearch(false, sortExpression); } catch (Exception ex) { base.CatchPageErrorAndLog(ex); }}/// <summary>/// Handles the ItemCommand event of the grdEmployee control. Fired when the grid is expanded/// </summary>/// <param name="sender">The source of the event.</param>/// <param name="e">The <see cref="Telerik.Web.UI.GridCommandEventArgs"/> instance containing the event data.</param>protected void grdEmployee_ItemCommand(object sender, GridCommandEventArgs e){ try { if (e.CommandName == RadGrid.ExpandCollapseCommandName && !e.Item.Expanded) { //show the details of the employee PopulateEmployeeDetailTemplate(e.Item as GridDataItem, e); } } catch (Exception ex) { base.CatchPageErrorAndLog(ex); }}/// <summary>/// Handles the ExportCellFormatting event of the grdEmployee control./// </summary>/// <param name="sender">The source of the event.</param>/// <param name="e">The <see cref="Telerik.Web.UI.ExportCellFormattingEventArgs"/> instance containing the event data.</param>protected void grdEmployee_ExportCellFormatting(object sender, ExportCellFormattingEventArgs e){ if (_gridDataExcelExport == true) //do this only for excel export { //header item formatting GridHeaderItem HeaderItem = (GridHeaderItem)grdEmployee.MasterTableView.GetItems(GridItemType.Header)[0]; foreach (TableCell cell in HeaderItem.Cells) { cell.Style["text-align"] = "left"; } // each column data formatting e.Cell.Style["text-align"] = "left"; }}/// <summary>/// Handles the PreRender event of the grdEmployee control./// </summary>/// <param name="sender">The source of the event.</param>/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>protected void grdEmployee_PreRender(object sender, EventArgs e){ //We are using our own select all record option //We want to allow the user to uncheck rows after they do a select all first //See below why we want do that //The Telerik grid top header checkbox by default, only selects records listed on the page //Also, the Telerik grid will check the top checkbox, if all the rows displayed in the page is checked(we may not want this, as user might have deselected some rows) if (_gridDataExport == false) //do this only when not exporting data { foreach (GridHeaderItem headerItem in grdEmployee.MasterTableView.GetItems(GridItemType.Header)) { //Find the SelectAll CheckBox in the header using the ClientSelectColumn's "UniqueName" if (headerItem["Select"].Controls[0] != null) { CheckBox chkSelectAll = headerItem["Select"].Controls[0] as CheckBox; if (chkSelectAll != null) { //hide it chkSelectAll.Visible = false; } } } } else if ((_gridDataExport == true) && (_gridDataPdfExport == true)) //pdf export { //format header columns for pdf export foreach (GridHeaderItem headerItem in grdEmployee.MasterTableView.GetItems(GridItemType.Header)) { headerItem["FirstName"].Style["text-align"] = "left"; headerItem["LastName"].Style["text-align"] = "left"; headerItem["MiddleInitial"].Style["text-align"] = "left"; headerItem["EmployeeNumber"].Style["text-align"] = "left"; headerItem["SSN"].Style["text-align"] = "left"; } GridColumn column = grdEmployee.MasterTableView.GetColumn("FirstName"); column.HeaderStyle.Width = Unit.Pixel(50); GridColumn column2 = grdEmployee.MasterTableView.GetColumn("MiddleInitial"); column2.HeaderStyle.Width = Unit.Pixel(50); }}/// <summary>/// Handles the PageSizeChanged event of the grdEmployee control./// </summary>/// <param name="sender">The source of the event.</param>/// <param name="e">The <see cref="Telerik.Web.UI.GridPageSizeChangedEventArgs"/> instance containing the event data.</param>protected void grdEmployee_PageSizeChanged(object sender, GridPageSizeChangedEventArgs e){ try { if (_gridDataExport == false) { StoreGridSelectedItems(this.grdEmployee); DoSearch(false); } } catch (Exception ex) //capture any error here to show it as we use AJAX { base.CatchPageErrorAndLog(ex); }}/// <summary>/// Handles the PageIndexChanged event of the grdEmployee control./// </summary>/// <param name="sender">The source of the event.</param>/// <param name="e">The <see cref="Telerik.Web.UI.GridPageChangedEventArgs"/> instance containing the event data.</param>protected void grdEmployee_PageIndexChanged(object sender, GridPageChangedEventArgs e){ try { StoreGridSelectedItems(this.grdEmployee); DoSearch(false); } catch (Exception ex) //capture any error here to show it as we use AJAX { base.CatchPageErrorAndLog(ex); }}/// <summary>/// Handles the Click event of the btnGridExportToExcel control./// </summary>/// <param name="sender">The source of the event.</param>/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>protected void btnGridExportToExcel_Click(object sender, EventArgs e){ _gridDataExport = true; //set this so that other grid events can check for this and not execute it as we do not need that when exporting _gridDataExcelExport = true; //Following is necessary for getting all rows from database. DoSearch(false); grdEmployee.MasterTableView.RowIndicatorColumn.Visible = false; //hide the select checkbox column grdEmployee.MasterTableView.Columns.FindByUniqueName("Select").Visible = false; grdEmployee.MasterTableView.Columns.FindByUniqueName("CombinedEmployeeStatus").Visible = false; grdEmployee.ExportSettings.HideStructureColumns = true; grdEmployee.ExportSettings.OpenInNewWindow = true; grdEmployee.ExportSettings.ExportOnlyData = true; grdEmployee.ExportSettings.IgnorePaging = true; grdEmployee.MasterTableView.ExportToExcel();}/// <summary>/// Handles the Click event of the btnGridExportToPDF control./// </summary>/// <param name="sender">The source of the event.</param>/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>protected void btnGridExportToPDF_Click(object sender, EventArgs e){ _gridDataExport = true; //set this so that other gird events can check for this and not execute it as we do not need that when exporting _gridDataPdfExport = true; DoSearch(false); //hide the select checkbox column grdEmployee.MasterTableView.Columns.FindByUniqueName("Select").Visible = false; grdEmployee.MasterTableView.Columns.FindByUniqueName("CombinedEmployeeStatus").Visible = false; //format columns for fitting within page in portrait mode grdEmployee.MasterTableView.Columns.FindByUniqueName("SSN").HeaderStyle.Width = Unit.Pixel(100); grdEmployee.MasterTableView.Columns.FindByUniqueName("SSN").ItemStyle.Width = Unit.Pixel(100); grdEmployee.MasterTableView.Columns.FindByUniqueName("EmployeeNumber").HeaderStyle.Width = Unit.Pixel(100); grdEmployee.MasterTableView.Columns.FindByUniqueName("EmployeeNumber").ItemStyle.Width = Unit.Pixel(100); grdEmployee.MasterTableView.Columns.FindByUniqueName("FirstName").ItemStyle.Width = Unit.Pixel(100); grdEmployee.MasterTableView.Columns.FindByUniqueName("FirstName").HeaderStyle.Width = Unit.Pixel(100); grdEmployee.MasterTableView.Columns.FindByUniqueName("LastName").HeaderStyle.Width = Unit.Pixel(100); grdEmployee.MasterTableView.Columns.FindByUniqueName("LastName").ItemStyle.Width = Unit.Pixel(100); grdEmployee.MasterTableView.Columns.FindByUniqueName("MiddleInitial").ItemStyle.Width = Unit.Pixel(100); grdEmployee.MasterTableView.Columns.FindByUniqueName("MiddleInitial").HeaderStyle.Width = Unit.Pixel(100); grdEmployee.ExportSettings.OpenInNewWindow = true; grdEmployee.ExportSettings.ExportOnlyData = true; grdEmployee.ExportSettings.IgnorePaging = true; grdEmployee.ExportSettings.Pdf.PageLeftMargin = Unit.Pixel(0); grdEmployee.ExportSettings.Pdf.PageRightMargin = Unit.Pixel(0); grdEmployee.MasterTableView.ExportToPdf();}#endregion