I am trying to apply formatting to a pdf export using the RadGrid_ItemCreated event as described in:
http://www.telerik.com/help/aspnet/grid/grdexporttipstricks.html
Problem is that RadGrid_ItemCreated is always called before RadGrid_ItemCommand so setting a boolean value in RadGrid_ItemCommand to be used in RadGrid_ItemCreated doesn't work.
We are using the 2011 Q3 release. I'm new to telerik controls so am probably missing something obvious.
Any ideas please. Thanks.
http://www.telerik.com/help/aspnet/grid/grdexporttipstricks.html
Problem is that RadGrid_ItemCreated is always called before RadGrid_ItemCommand so setting a boolean value in RadGrid_ItemCommand to be used in RadGrid_ItemCreated doesn't work.
We are using the 2011 Q3 release. I'm new to telerik controls so am probably missing something obvious.
Any ideas please. Thanks.
3 Answers, 1 is accepted
0

Jayesh Goyani
Top achievements
Rank 2
answered on 25 Nov 2011, 06:09 PM
Hello,
Are you trying to export with inbuilt button or with External button.?
Thanks,
Jayesh Goyani
Are you trying to export with inbuilt button or with External button.?
Thanks,
Jayesh Goyani
0

Jayesh Goyani
Top achievements
Rank 2
answered on 25 Nov 2011, 06:36 PM
Hello,
Please check below code snippet.
Thanks,
Jayesh Goyani
Please check below code snippet.
<
div
>
<
telerik:RadScriptManager
ID
=
"RadScriptManager1"
runat
=
"server"
>
</
telerik:RadScriptManager
>
<
asp:Button
ID
=
"Button1"
runat
=
"server"
Text
=
"export to pdf"
OnClick
=
"Button1_Click"
/>
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
AutoGenerateColumns
=
"false"
OnNeedDataSource
=
"RadGrid1_NeedDataSource"
onitemcommand
=
"RadGrid1_ItemCommand"
>
<
ExportSettings
ExportOnlyData
=
"true"
OpenInNewWindow
=
"true"
></
ExportSettings
>
<
MasterTableView
CommandItemDisplay
=
"Top"
>
<
CommandItemSettings
ShowExportToPdfButton
=
"true"
/>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"ID"
UniqueName
=
"ID"
HeaderText
=
"ID"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Name"
UniqueName
=
"Name"
HeaderText
=
"Name"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"ID"
UniqueName
=
"ID"
HeaderText
=
"ID"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Name"
UniqueName
=
"Name"
HeaderText
=
"Name"
>
</
telerik:GridBoundColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
div
>
protected
void
Page_Load(
object
sender, EventArgs e)
{
}
protected
void
Button1_Click(
object
sender, EventArgs e)
{
RadGrid1.MasterTableView.ExportToPdf();
RadGrid1.Rebind();
ApplyStle();
}
protected
void
RadGrid1_NeedDataSource(
object
sender, GridNeedDataSourceEventArgs e)
{
dynamic data =
new
[] {
new
{ ID = 1, Name =
"name1"
},
new
{ ID = 2, Name =
"Name2"
},
new
{ ID = 3, Name =
"name3"
},
new
{ ID = 4, Name =
"Name4"
},
new
{ ID = 5, Name =
"name5"
}
};
RadGrid1.DataSource = data;
}
protected
void
ApplyStle()
{
foreach
(GridDataItem item
in
RadGrid1.Items)
{
item.Font.Name =
"Calibri"
;
item.Style[
"font-size"
] =
"8pt"
;
item.Style[
"background-color"
] =
"#c3c3c3"
;
item.Style[
"vertical-align"
] =
"middle"
;
}
}
protected
void
RadGrid1_ItemCommand(
object
sender, GridCommandEventArgs e)
{
if
(e.CommandName == RadGrid.ExportToPdfCommandName)
{
ApplyStle();
}
}
Thanks,
Jayesh Goyani
0

Neil
Top achievements
Rank 1
answered on 28 Nov 2011, 11:29 AM
Thanks Jayesh, that's resolved it. In answer to your 1st question I tried with both an inbuilt button and external button, same problem applied to both. I have a slightly different solution to yours, but calling Rebind() was the key. This causes ItemCreated() to be fired after the export. Capturing the ItemCreated event allows me to get each GridItem (so for example I can then format header items) rather than GridDataItems in your example. Code snippet:
bool
_isPdfExport =
false
;
protected
void
Button_Click(
object
sender, EventArgs e)
{
radGrid.MasterTableView.ExportToPdf();
radGrid.Rebind();
_isPdfExport =
true
;
}
protected
void
radGrid_NeedDataSource(
object
sender, GridNeedDataSourceEventArgs e)
{
LoadData();
}
private
void
LoadData()
{
radGrid.DataSource = [
set
datasource]
if
(!_isPdfExport ) radGrid.DataBind();
}
protected
void
radGrid_ItemCreated(
object
sender, GridItemEventArgs e)
{
if
(_isPdfExport) SetPdfItemFormatting(e.Item);
}
private
void
SetPdfItemFormatting(GridItem item)
{
if
(item
is
GridHeaderItem)
{
GridHeaderItem headerItem = (GridHeaderItem)item;
//implement formatting for header item here
}
}