I've searched through the forums and haven't found anyone with exactly this situation yet, so hopefully I can get some help from all of you smart people out there.
I've got an application page in a WSS 3.0 environment that has a RadGrid on it. The grid is populated with data from a back-end SQL database and I've implemented the Export to Excel functionality as described here: http://demos.telerik.com/aspnet-ajax/Grid/Examples/GeneralFeatures/Exporting/DefaultCS.aspx. Exporting the data to Excel works just fine. However, after the "Export to Excel" button has been clicked, all controls on my page are no longer functional. I can't Export to Excel again, I can't refresh the grid, etc...everything is effectively frozen.
To further test this, I created a standard ASP.NET Web Application (to see if it would work outside of a WSS 3.0 environment). Using the EXACT SAME CODE, everything works just fine. I can export, refresh the grid, and life is good.
My grid is ajaxified through RadAjaxManager. The "Export to Excel" button is not ajaxified and sits in a HTML table above the grid.
I need some guidance as to why my SharePoint environment might be giving me a problem. To help you help me, see the below code blocks.
This is my RadScriptManager as it sits on a master page that my SharePoint environment is using
<telerik:RadScriptManager ID="RadScriptManager1" runat="server" > | |
</telerik:RadScriptManager> |
<asp:Content ID="Main" contentplaceholderid="PlaceHolderMain" runat="server"> | |
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Height="75px" | |
Width="75px"> | |
<img alt="Loading..." src='<%= RadAjaxLoadingPanel.GetWebResourceUrl(Page, "Telerik.Web.UI.Skins.Default.Ajax.loading.gif") %>' | |
style="border: 0px;" /> | |
</telerik:RadAjaxLoadingPanel> | |
<table cellpadding="5px"> | |
<tr> | |
<td class="SearchLabel"> | |
View: | |
</td> | |
<td> | |
<telerik:RadComboBox ID="cboViews" runat="server" Skin="WebBlue"> | |
<Items> | |
<telerik:RadComboBoxItem Text="" Value="" /> | |
<telerik:RadComboBoxItem Text="DummyData" Value="DummyData" /> | |
<telerik:RadComboBoxItem Text="DummyData" Value="DummyData" /> | |
<telerik:RadComboBoxItem Text="DummyData" Value="DummyData" /> | |
<telerik:RadComboBoxItem Text="DummyData" Value="DummyData" /> | |
<telerik:RadComboBoxItem Text="DummyData" Value="DummyData" /> | |
<telerik:RadComboBoxItem Text="DummyData" Value="DummyData" /> | |
<telerik:RadComboBoxItem Text="DummyData" Value="DummyData" /> | |
<telerik:RadComboBoxItem Text="DummyData" Value="DummyData" /> | |
<telerik:RadComboBoxItem Text="DummyData" Value="DummyData" /> | |
<telerik:RadComboBoxItem Text="DummyData" Value="DummyData" /> | |
<telerik:RadComboBoxItem Text="DummyData" Value="DummyData" /> | |
<telerik:RadComboBoxItem Text="DummyData" Value="DummyData" /> | |
<telerik:RadComboBoxItem Text="DummyData" Value="DummyData" /> | |
<telerik:RadComboBoxItem Text="DummyData" Value="DummyData" /> | |
</Items> | |
</telerik:RadComboBox> | |
</td> | |
<td> | |
<asp:LinkButton CssClass="SearchLabel" OnCommand="lbtnGo_Command" ID="lbtnGo" Font-Underline="true" runat="server" Text="Go"/> | |
</td> | |
</tr> | |
</table> | |
<table> | |
<tr> | |
<td align="left"> | |
<asp:Button ID="btnExport" Width="150px" Text="Export to Excel" OnClick="btnExport_Click" runat="server" /> | |
</td> | |
</tr> | |
</table> | |
<table> | |
<tr> | |
<td> | |
<telerik:RadGrid | |
ID="grdView" | |
runat="server" | |
Skin="Office2007" | |
PageSize="100" | |
OnNeedDataSource="grdView_NeedDataSource" | |
OnExcelMLExportStylesCreated="RadGrid1_ExcelMLExportStylesCreated" | |
OnExcelMLExportRowCreated="RadGrid1_ExcelMLExportRowCreated" | |
> | |
<MasterTableView HeaderStyle-Font-Bold="true" HeaderStyle-Wrap="false" ItemStyle-Wrap="false"> | |
</MasterTableView> | |
<GroupingSettings CaseSensitive="false" /> | |
</telerik:RadGrid> | |
</td> | |
</tr> | |
</table> | |
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> | |
<AjaxSettings> | |
<telerik:AjaxSetting AjaxControlID="lbtnGo"> | |
<UpdatedControls> | |
<telerik:AjaxUpdatedControl ControlID="grdView" LoadingPanelID="RadAjaxLoadingPanel1" /> | |
</UpdatedControls> | |
</telerik:AjaxSetting> | |
<telerik:AjaxSetting AjaxControlID="grdView"> | |
<UpdatedControls> | |
<telerik:AjaxUpdatedControl ControlID="grdView" LoadingPanelID="RadAjaxLoadingPanel1" /> | |
</UpdatedControls> | |
</telerik:AjaxSetting> | |
</AjaxSettings> | |
</telerik:RadAjaxManager> | |
</asp:Content> | |
1 public class MyClass : LayoutsPageBase |
2 { |
3 protected RadGrid grdView; |
4 protected RadComboBox cboViews; |
5 protected Button btnExport; |
6 private string curview; |
7 |
8 protected override void OnLoad(EventArgs e) |
9 { |
10 if (!Page.IsPostBack) |
11 { |
12 grdView.Visible = false; |
13 } |
14 else |
15 { |
16 grdView.Visible = true; |
17 } |
18 } |
19 |
20 protected void lbtnGo_Command(object sender, CommandEventArgs e) |
21 { |
22 grdView.Rebind(); |
23 } |
24 |
25 protected void grdView_NeedDataSource(object o, GridNeedDataSourceEventArgs e) |
26 { |
27 if (cboViews.SelectedValue != "") |
28 { |
29 curview = cboViews.SelectedValue; |
30 |
31 Database db = DatabaseFactory.CreateDatabase(); |
32 DbCommand getleview = db.GetStoredProcCommand("MyStoredProcedure"); |
33 |
34 db.AddInParameter(getleview, "View", DbType.String, curview); |
35 |
36 DataSet ds = db.ExecuteDataSet(getleview); |
37 DataTable dt = ds.Tables[0]; |
38 |
39 grdView.DataSource = dt; |
40 } |
41 else |
42 { |
43 grdView.DataSource = string.Empty; |
44 } |
45 } |
46 |
47 protected void btnExport_Click(object sender, EventArgs e) |
48 { |
49 ConfigureExport(); |
50 grdView.MasterTableView.ExportToExcel(); |
51 } |
52 |
53 public void ConfigureExport() |
54 { |
55 grdView.ExportSettings.ExportOnlyData = true; |
56 grdView.ExportSettings.IgnorePaging = true; |
57 grdView.ExportSettings.OpenInNewWindow = true; |
58 if (cboViews.SelectedValue != "") |
59 { |
60 curview = cboViews.SelectedValue; |
61 grdView.ExportSettings.FileName = "SomeFileName_" + curview; |
62 } |
63 else |
64 { |
65 grdView.ExportSettings.FileName = "SomeFileName"; |
66 } |
67 } |
68 |
69 protected void RadGrid1_ExcelMLExportRowCreated(object source, Telerik.Web.UI.GridExcelBuilder.GridExportExcelMLRowCreatedArgs e) |
70 { |
71 if (e.RowType == Telerik.Web.UI.GridExcelBuilder.GridExportExcelMLRowType.DataRow) |
72 { |
73 if (e.Row.Cells[0] != null && ((string)e.Row.Cells[0].Data.DataItem).Contains("U")) |
74 { |
75 e.Row.Cells[0].StyleValue = "MyCustomStyle"; |
76 } |
77 } |
78 } |
79 |
80 protected void RadGrid1_ExcelMLExportStylesCreated(object source, Telerik.Web.UI.GridExcelBuilder.GridExportExcelMLStyleCreatedArgs e) |
81 { |
82 foreach (Telerik.Web.UI.GridExcelBuilder.StyleElement style in e.Styles) |
83 { |
84 if (style.Id == "headerStyle") |
85 { |
86 style.FontStyle.Bold = true; |
87 style.FontStyle.Color = System.Drawing.Color.Gainsboro; |
88 style.InteriorStyle.Color = System.Drawing.Color.Wheat; |
89 style.InteriorStyle.Pattern = Telerik.Web.UI.GridExcelBuilder.InteriorPatternType.Solid; |
90 } |
91 else if (style.Id == "itemStyle") |
92 { |
93 style.InteriorStyle.Color = System.Drawing.Color.WhiteSmoke; |
94 style.InteriorStyle.Pattern = Telerik.Web.UI.GridExcelBuilder.InteriorPatternType.Solid; |
95 } |
96 else if (style.Id == "alternatingItemStyle") |
97 { |
98 style.InteriorStyle.Color = System.Drawing.Color.LightGray; |
99 style.InteriorStyle.Pattern = Telerik.Web.UI.GridExcelBuilder.InteriorPatternType.Solid; |
100 } |
101 } |
102 |
103 Telerik.Web.UI.GridExcelBuilder.StyleElement myStyle = new Telerik.Web.UI.GridExcelBuilder.StyleElement("MyCustomStyle"); |
104 myStyle.FontStyle.Bold = true; |
105 myStyle.FontStyle.Italic = true; |
106 myStyle.InteriorStyle.Color = System.Drawing.Color.Gray; |
107 myStyle.InteriorStyle.Pattern = Telerik.Web.UI.GridExcelBuilder.InteriorPatternType.Solid; |
108 e.Styles.Add(myStyle); |
109 } |
110 } |