Thanks, Daniel. Here is the important ASPX:
01.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="reviewProcess.aspx.cs" Inherits="ReviewClass.reviewProcess" MaintainScrollPositionOnPostback="true" %>
02.
03.
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
04.
<%@ Register Assembly="SD.LLBLGen.Pro.ORMSupportClasses.Web" Namespace="SD.LLBLGen.Pro.ORMSupportClasses" TagPrefix="llblgenpro" %>
05.
06.
<!DOCTYPE html>
07.
09.
<
head
runat
=
"server"
>
10.
<
title
>Review Process</
title
>
11.
<
link
href
=
"corporatebasic.css"
rel
=
"stylesheet"
/>
12.
</
head
>
13.
<
body
>
14.
...
15.
16.
<
h3
>All Users</
h3
>
17.
<
telerik:RadButton
ID
=
"alternaExportPreflightcheckUsers"
runat
=
"server"
Text
=
"PDF Export of Scrollable"
onclick
=
"alternaExportPreflightcheckUsers_Click"
></
telerik:RadButton
>
18.
<
telerik:RadGrid
ID
=
"gridPreflightcheckUsers"
runat
=
"server"
AutoGenerateColumns
=
"False"
DataSourceID
=
"llblgSystemUsers"
ToolTip
=
"System Users Overview
(Recommend a look at: IsActive not null and SecRoleSummary null)"
AllowFilteringByColumn
=
"True"
ShowFooter
=
"True"
ShowStatusBar
=
"True"
Height
=
"60em"
19.
OnItemDataBound
=
"gridPreflightcheckUsers_ItemDataBound"
20.
OnPdfExporting
=
"gridPreflightcheckUsers_PdfExporting"
21.
>
22.
<
ExportSettings
FileName
=
"summary_SystemUsers"
OpenInNewWindow
=
"True"
ExportOnlyData
=
"True"
Excel-Format
=
"ExcelML"
>
23.
<
Pdf
AllowCopy
=
"True"
Author
=
"The Company"
BorderStyle
=
"Thin"
PageTitle
=
"Access Review for System"
ForceTextWrap
=
"True"
PageBottomMargin
=
"0.5in"
PageLeftMargin
=
"0.5in"
PageRightMargin
=
"0.5in"
PageTopMargin
=
"0.5in"
PageHeight
=
"8.5in"
PageWidth
=
"11in"
>
24.
</
Pdf
>
25.
<
Excel
Format
=
"ExcelML"
/>
26.
</
ExportSettings
>
27.
<
ClientSettings
>
28.
<
Scrolling
AllowScroll
=
"True"
UseStaticHeaders
=
"True"
></
Scrolling
>
29.
</
ClientSettings
>
30.
<
MasterTableView
DataKeyNames
=
"SystemUserID"
DataSourceID
=
"llblgSystemUsers"
CommandItemDisplay
=
"Top"
>
31.
<
CommandItemSettings
ShowExportToPdfButton
=
"true"
ShowExportToExcelButton
=
"false"
ShowExportToCsvButton
=
"true"
ShowAddNewRecordButton
=
"False"
ShowRefreshButton
=
"false"
>
32.
</
CommandItemSettings
>
33.
<
RowIndicatorColumn
Visible
=
"False"
>
34.
</
RowIndicatorColumn
>
35.
<
ExpandCollapseColumn
Created
=
"True"
>
36.
</
ExpandCollapseColumn
>
37.
<
Columns
>
38.
<
telerik:GridTemplateColumn
HeaderText
=
"#"
UniqueName
=
"RowNumber"
HeaderStyle-Width
=
"3%"
>
39.
<
ItemTemplate
>
40.
<
asp:Label
runat
=
"server"
ID
=
"lblRowNumberAllUsers"
Width
=
"50px"
Text='<%# Container.DataSetIndex+1 %>'></
asp:Label
>
41.
</
ItemTemplate
>
42.
</
telerik:GridTemplateColumn
>
43.
<
telerik:GridBoundColumn
DataField
=
"SystemUserID"
DataType
=
"System.Int32"
FilterControlAltText
=
"Filter SystemUserID column"
HeaderText
=
"UID"
ReadOnly
=
"True"
SortExpression
=
"SystemUserID"
UniqueName
=
"SystemUserID"
HeaderStyle-Width
=
"3%"
>
44.
</
telerik:GridBoundColumn
>
45.
<
telerik:GridCheckBoxColumn
DataField
=
"IsActive"
DataType
=
"System.Boolean"
FilterControlAltText
=
"Filter IsActive column"
HeaderText
=
"IsActive"
SortExpression
=
"IsActive"
UniqueName
=
"IsActive"
HeaderStyle-Width
=
"3%"
>
46.
</
telerik:GridCheckBoxColumn
>
47.
48.
<
telerik:GridBoundColumn
DataField
=
"ADname"
FilterControlAltText
=
"Filter ADname column"
HeaderText
=
"ADname"
SortExpression
=
"ADname"
UniqueName
=
"ADname"
>
49.
</
telerik:GridBoundColumn
>
50.
<
telerik:GridBoundColumn
DataField
=
"FirstName"
FilterControlAltText
=
"Filter FirstName column"
HeaderText
=
"FirstName"
SortExpression
=
"FirstName"
UniqueName
=
"FirstName"
>
51.
</
telerik:GridBoundColumn
>
52.
<
telerik:GridBoundColumn
DataField
=
"LastName"
FilterControlAltText
=
"Filter LastName column"
HeaderText
=
"LastName"
SortExpression
=
"LastName"
UniqueName
=
"LastName"
>
53.
</
telerik:GridBoundColumn
>
54.
<
telerik:GridBoundColumn
DataField
=
"ADuserDetail.Title"
FilterControlAltText
=
"Filter Title column"
HeaderText
=
"Title"
SortExpression
=
"Title"
UniqueName
=
"Title"
>
55.
</
telerik:GridBoundColumn
>
56.
<
telerik:GridBoundColumn
DataField
=
"ADuserDetail.Department"
FilterControlAltText
=
"Filter Department column"
HeaderText
=
"Department"
SortExpression
=
"Department"
UniqueName
=
"Department"
>
57.
</
telerik:GridBoundColumn
>
58.
<
telerik:GridBoundColumn
DataField
=
"ADuserDetail.ManagerDisplayName"
FilterControlAltText
=
"Filter Manager Name column"
HeaderText
=
"Manager Name"
SortExpression
=
"ManagerDisplayName"
UniqueName
=
"ManagerDisplayName"
>
59.
</
telerik:GridBoundColumn
>
60.
61.
<
telerik:GridBoundColumn
DataField
=
"SecRoleSummary"
FilterControlAltText
=
"Filter SecRoleSummary column"
HeaderText
=
"SecRoleSummary"
SortExpression
=
"SecRoleSummary"
UniqueName
=
"SecRoleSummary"
Exportable
=
"true"
>
62.
</
telerik:GridBoundColumn
>
63.
<
telerik:GridBoundColumn
DataField
=
"AFEapprovalLimit"
DataType
=
"System.Decimal"
DataFormatString
=
"{0:C}"
FilterControlAltText
=
"Filter AFEapprovalLimit column"
HeaderText
=
"AFEapprovalLimit"
SortExpression
=
"AFEapprovalLimit"
UniqueName
=
"AFEapprovalLimit"
>
64.
</
telerik:GridBoundColumn
>
65.
<
telerik:GridBoundColumn
DataField
=
"EmailAddress"
FilterControlAltText
=
"Filter EmailAddress column"
HeaderText
=
"EmailAddress"
SortExpression
=
"EmailAddress"
UniqueName
=
"EmailAddress"
>
66.
</
telerik:GridBoundColumn
>
67.
</
Columns
>
68.
</
MasterTableView
>
69.
</
telerik:RadGrid
>
70.
<
llblgenpro:LLBLGenProDataSource
ID
=
"llblgSystemUsers"
runat
=
"server"
DataContainerType
=
"EntityCollection"
EntityCollectionTypeName
=
"SystemAuditing.CollectionClasses.SystemUserCollection, SystemAuditing"
SortingMode
=
"ClientSide"
>
71.
</
llblgenpro:LLBLGenProDataSource
>
72.
And the code behind:
using
System;
using
System.Collections.Generic;
using
System.Collections.Specialized;
using
System.Configuration;
using
System.Data;
using
System.IO;
using
System.Linq;
using
System.Net.Mail;
using
System.Text;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
SD.LLBLGen.Pro.ORMSupportClasses;
using
SystemAuditing.EntityClasses;
using
SystemAuditing.CollectionClasses;
using
SystemAuditing.HelperClasses;
using
SystemAuditing.FactoryClasses;
using
SystemAuditing.RelationClasses;
using
Telerik.Web.UI;
namespace
System_Audit_Review_Console
{
public
partial
class
reviewProcess : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
SystemUserEntity Suser =
new
SystemUserEntity(1);
//user 1 is Admin
SystemUserCollection allActiveSystemUsers =
new
SystemUserCollection();
//SNIP
...
}
protected
void
gridPreflightcheckUsers_ItemDataBound(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridDataItem)
{
GridDataItem sysusr = (GridDataItem)e.Item;
SystemUserEntity sysusrDetail =
new
SystemUserEntity(Convert.ToInt32(sysusr[
"SystemUserID"
].Text));
sysusr[
"SecRoleSummary"
].Text = sysusrDetail.SecRoleSummary();
}
}
protected
void
gridPreflightcheckUsers_PdfExporting(
object
sender, GridPdfExportingArgs e)
{
//to handle the automatically created in-header export button
e.RawHTML =
"<div style=\"font-weight:bold; font-size:1.25em;\">All System Users "
+ DateTime.Now.ToShortDateString() +
"</div>"
+ e.RawHTML;
}
protected
void
alternaExportPreflightcheckUsers_Click(
object
sender, EventArgs e)
{
//for the separately created export button
gridPreflightcheckUsers.ClientSettings.Scrolling.AllowScroll =
false
;
gridPreflightcheckUsers.ClientSettings.Scrolling.UseStaticHeaders =
false
;
gridPreflightcheckUsers.DataBind();
gridPreflightcheckUsers.MasterTableView.ExportToPdf();
}
}
}
The automatic header export button creates an almost empty PDF: just the header shows. The "alternative" export radbutton that I put in manually exports successfully. I'd prefer to use the in-header button, though.
- Justin