I have an ASP.NET application with several RadGrids on it displaying data, as well as some other text and images. All of the content is contained within an ASP.NET Ajax tabcontainer. The end user wants the ability to export all of the data to a PDF file, so I thought it might be a good idea to put a RadEditor on another tab, and have all of the data from the application added to the RadEditor content area, and then when the end user is ready they can make any needed changes in the RadEditor, and then use the ExportToPDF function to get the PDF.
However, I have been unable to get the data from the RadGrids into the RadEditor, can anyone give me some insight as to how I can accomplish this? I tried this:
public string RenderControl(Control ctrl)
{
StringBuilder sb = new StringBuilder();
StringWriter tw = new StringWriter(sb);
HtmlTextWriter hw = new HtmlTextWriter(tw);
ctrl.RenderControl(hw);
return sb.ToString();
}
protected void Button1_Click1(object sender, EventArgs e)
{
RadEditor1.Content += RenderControl(RadGrid1);
RadEditor1.ExportToPdf();
}
But I got some kind of script error:
Script control 'RadGrid1' is not a registered script control. Script controls must be registered using RegisterScriptControl() before calling RegisterScriptDescriptors().
Parameter name: scriptControl
Any and all input is greatly appreciated.
John.
Response.OutputStream
.
Each time I press the btnVisualizza_MG button the image must be updated. The button is enclosed in a RadAjaxManager as triggering control of the div. This is a brief extract of the code.
<
telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="btnVisualizza_MG">
<
UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="divDisegnoModificaDisegno" LoadingPanelID="lp1" />
</UpdatedControls>
</telerik:AjaxSetting>
<AjaxSettings>
</telerik:RadAjaxManagerProxy >
protected
void btnVisualizza_MG_Click(object sender, EventArgs e)
{
divDisegnoModificaDisegno.Controls.Clear();
System.Web.UI.HtmlControls.
HtmlImage image = new System.Web.UI.HtmlControls.HtmlImage();
image.Src =
"DrawGeometriaSistema.aspx?dim_x=640&dim_y=609";
divDisegnoModificaDisegno.Controls.Add(image);
}
THE PROBLEM: the first time I press the btnVisualizza_MG button, the DrawGeometriaSistema.aspx page is called and the image is generated but the following times the image remains unchanged since the code, when reaching "image.Scr=..." instruction, does not call the DrawGeometriaSistema.aspx page.
Why and how to solve this problem?
| <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" UpdatePanelsRenderMode="Inline" |
| DefaultLoadingPanelID="LoadingPanel1"> |
| <ClientEvents OnRequestStart="DisableControls" OnResponseEnd="EnableControls" /> |
| </telerik:RadAjaxManager> |
| <telerik:RadAjaxManagerProxy ID="ajProxyManager" runat="server"> |
| <AjaxSettings> |
| <telerik:AjaxSetting AjaxControlID="ddlListing"> |
| <UpdatedControls> |
| <telerik:AjaxUpdatedControl ControlID="divBedroomSuite" UpdatePanelRenderMode="Block" /> |
| </UpdatedControls> |
| </telerik:AjaxSetting> |
| </AjaxSettings> |
| </telerik:RadAjaxManagerProxy> |

| <div class="column first" id=""> |
| <telerik:RadTreeView ID="RadTreeView1" Runat="server"> |
| <Nodes> |
| <telerik:RadTreeNode runat="server" Text="Root RadTreeNode1"> |
| <Nodes> |
| <telerik:RadTreeNode runat="server" Text="Load WebUserControl1.ascx" OnClick="Button1_Click" ID="Button1" > |
| </telerik:RadTreeNode> |
| </Nodes> |
| </telerik:RadTreeNode> |
| <telerik:RadTreeNode runat="server" Text="Load WebUserControl2.ascx" OnClick="Button2_Click" ID="Button2"> |
| <Nodes> |
| <telerik:RadTreeNode runat="server" Text="Child RadTreeNode 2"> |
| </telerik:RadTreeNode> |
| </Nodes> |
| </telerik:RadTreeNode> |
| <telerik:RadTreeNode runat="server" Text="Root RadTreeNode3"> |
| <Nodes> |
| <telerik:RadTreeNode runat="server" Text="Child RadTreeNode 1"> |
| </telerik:RadTreeNode> |
| <telerik:RadTreeNode runat="server" Text="Child RadTreeNode 2"> |
| </telerik:RadTreeNode> |
| <telerik:RadTreeNode runat="server" Text="Child RadTreeNode 3"> |
| </telerik:RadTreeNode> |
| </Nodes> |
| </telerik:RadTreeNode> |
| <telerik:RadTreeNode runat="server" Text="Root RadTreeNode4"> |
| <Nodes> |
| <telerik:RadTreeNode runat="server" Text="Child RadTreeNode 1"> |
| </telerik:RadTreeNode> |
| </Nodes> |
| </telerik:RadTreeNode> |
| </Nodes> |
| </telerik:RadTreeView> |
| <br /> |
| <asp:Button ID="Button3" runat="server" Text="Load WebUserControl1.ascx" OnClick="Button1_Click" /> |
| <asp:Button ID="Button4" runat="server" Text="Load WebUserControl2.ascx" OnClick="Button2_Click" /> |
| <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> |
| <AjaxSettings> |
| <telerik:AjaxSetting AjaxControlID="Button1"> |
| <UpdatedControls> |
| <telerik:AjaxUpdatedControl ControlID="Panel1" /> |
| </UpdatedControls> |
| </telerik:AjaxSetting> |
| <telerik:AjaxSetting AjaxControlID="Button2"> |
| <UpdatedControls> |
| <telerik:AjaxUpdatedControl ControlID="Panel1" /> |
| </UpdatedControls> |
| </telerik:AjaxSetting> |
| </AjaxSettings> |
| </telerik:RadAjaxManager> |
| </div> |
| <div class="column last"> |
| <h3>Multivariate Data Analysis</h3> |
| <asp:Panel ID="Panel1" runat="server"> |
| </asp:Panel> |
| </div> |
| Partial Class InSite_test_Default |
| Inherits System.Web.UI.Page |
| Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Load |
| If (Not Me.CurrentControl Is String.Empty) Then |
| Me.LoadMyUserControl(Me.CurrentControl, Panel1) |
| End If |
| End Sub |
| Protected Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) |
| Me.LoadMyUserControl("WebUserControl1.ascx", Panel1) |
| End Sub |
| Protected Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) |
| Me.LoadMyUserControl("WebUserControl2.ascx", Panel1) |
| End Sub |
| Private Property CurrentControl() As String |
| Get |
| Return IIf(Me.ViewState("CurrentControl") Is Nothing, String.Empty, Me.ViewState("CurrentControl")) |
| End Get |
| Set(ByVal Value As String) |
| Me.ViewState("CurrentControl") = Value |
| End Set |
| End Property |
| Private Sub LoadMyUserControl(ByVal controlName As String, ByVal parent As Control) |
| parent.Controls.Clear() |
| Dim MyControl As UserControl = Me.LoadControl(controlName) |
| Dim userControlID As String = controlName.Split(".")(0) |
| MyControl.ID = userControlID.Replace("/", "").Replace("~", "") |
| parent.Controls.Add(MyControl) |
| Me.CurrentControl = controlName |
| End Sub |
| End Class |
| function indexChanged(sender, args) { |
| var id = sender.get_text().trim(); |
| $.get( 'User.aspx', { userid:id }, function(data) { |
| alert(data); |
| }); |
| } |