This is a migrated thread and some comments may be shown as answers.

Simple ExportToPdf Problem

3 Answers 82 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Chris
Top achievements
Rank 1
Chris asked on 11 Sep 2011, 09:00 PM
Ah, the joys of coding on a weekend...
So often needing the help of telerik wizards.

Must be missing something totally obvious. Setup a little test with radgrid, button outside of grid, click on button with CommandName="ExportToPdf" and CommandArgument="radgridName". On button click do a radgridName.MasterTableView.ExportToPdf(). All works well. IE pops up a window asking if I want to open or download the pdf. Great.

Back to my project with a large grid, lots of events, Ajax, etc. Same commands. Export command executes. Instead of creating the pdf, it rewrites the webpage with formatting adjusted like for the pdf. IE never responds. No pdf anywhere. Any guess as to what I might be doing wrong?

Thanks.
Chris

3 Answers, 1 is accepted

Sort by
0
Shinu
Top achievements
Rank 2
answered on 12 Sep 2011, 06:42 AM
Hello Chris,

Check the following Code-Library to export RadGrid content to Pdf with Ajax enabled
Export RadGrid content to Excel/Word/CSV/PDF with Ajax enabled.
For further information you can check the following help documenation as well.
Export from Ajaxified Grid.

Thanks,
Shinu.
0
Chris
Top achievements
Rank 1
answered on 12 Sep 2011, 05:39 PM
Still having same problem. Master page used by dozens of content pages. Each content page may have different context menu. Could name them all the same... not done so yet.

Master page content for centering and disabling ajax for pdf export:
function AjaxSetup(ajaxManager, eventArgs) {
    centerLoadingPanel();
    AjaxOffIfNeeded(ajaxManager, eventArgs);
}
function AjaxOffIfNeeded(ajaxManager, eventArgs) {
    if (eventArgs.EventTarget.indexOf("rcmContextMenu") != -1) {
        var currentMenuItem = document.getElementById(eventArgs.EventTargetElement.id);
        if (currentMenuItem) {
            if (currentMenuItem.Value == "PostBack") {
                eventArgs.set_enableAjax(false);
            }
        }
    }
}
function RowContextMenuClick(sender, eventArgs) {
    var evt = eventArgs.get_domEvent();
    if (sender.constructor.getName() == "Telerik.Web.UI.RadGrid") {
        var index = eventArgs.get_itemIndexHierarchical();
        document.getElementById("radGridClickedRowIndex").value = index;
        sender.get_masterTableView().selectItem(sender.get_masterTableView().get_dataItems()[index].get_element(), true);
    }
    if (evt.target.tagName == "INPUT" || evt.target.tagName == "A") {
        return;
    }
 
    evt.cancelBubble = true;
    evt.returnValue = false;
    if (evt.stopPropagation) {
        evt.stopPropagation();
        evt.preventDefault();
    }
}
function centerLoadingPanel() {
    centerElementOnScreen($get("<%= RALP.ClientID %>"));
}
function centerElementOnScreen(element) {
    var scrollTop = document.body.scrollTop;
    var scrollLeft = document.body.scrollLeft;
    var viewPortHeight = document.body.clientHeight;
    var viewPortWidth = document.body.clientWidth;
    if (document.compatMode == "CSS1Compat") {
        viewPortHeight = document.documentElement.clientHeight;
        viewPortWidth = document.documentElement.clientWidth;
        if (!$telerik.isSafari) {
            scrollTop = document.documentElement.scrollTop;
            scrollLeft = document.documentElement.scrollLeft;
        }
    }
    var topOffset = Math.ceil(viewPortHeight / 2 - element.offsetHeight / 2);
    var leftOffset = Math.ceil(viewPortWidth / 2 - element.offsetWidth / 2);
    var top = scrollTop + topOffset - 40;
    var left = scrollLeft + leftOffset - 70;
    element.style.position = "absolute";
    element.style.top = top + "px";
    element.style.left = left + "px";
}
The content page is also simple. Javascript probably unnecessary but still there...
<script type="text/javascript">
    function ItemClicking(menu, args) {
        var currentMenuItem = args.Item;
    }
</script>
Menu simple:
<telerik:RadContextMenu ID="rcmContextMenu" runat="server" OnItemClick="rcmGroups_ItemClick" OnClientItemClicked="ItemClicking"
    EnableRoundedCorners="true" EnableShadows="true">
    <Targets>
        <telerik:ContextMenuControlTarget ControlID="RGVGroups" />
    </Targets>
    <Items>
        <telerik:RadMenuItem Text="Add key" />
        <telerik:RadMenuItem Text="Edit key" />
        <telerik:RadMenuItem Text="Delete key" />
        <telerik:RadMenuItem IsSeparator="true" />
        <telerik:RadMenuItem Text="Print keys"  />
        <telerik:RadMenuItem Text="PDF keys" Value="PostBack" />
        <telerik:RadMenuItem Text="View history" />
    </Items>
</telerik:RadContextMenu>
Somehow, still not getting ajax turned off in master page script when firing context menu from content page. I have looked at the examples on the last response and still have no solution.
Any more suggestions?

Thanks.
Chris
0
Mira
Telerik team
answered on 15 Sep 2011, 09:38 AM
Hello Chris,

Could you please try using the approach from the Cancel the AJAX request on InitializeRequest event section of the Exclude Controls from Ajaxifying help topic and let me know whether it helps?

I am looking forward to reply.

All the best,
Mira
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal
Tags
Grid
Asked by
Chris
Top achievements
Rank 1
Answers by
Shinu
Top achievements
Rank 2
Chris
Top achievements
Rank 1
Mira
Telerik team
Share this question
or