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 }}