RadAjaxManager Configuration with RadTabStrip, RadGrid, and Export

4 posts, 0 answers
  1. Zhi
    Zhi avatar
    9 posts
    Member since:
    Sep 2010

    Posted 23 Jan 2012 Link to this post

    Hi there,

    I'm struggling to get file exports and sorting working on a grid without full postbacks.

    I am able to get each working individually without postbacks, but never together.

    Here is the code. I have included lots of <br /> so that you can observe the full postback easily (the page will scroll back to the top). With this code, I can export the grid without a postback. Column sorting, however, produces a postback.

    <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
        CodeBehind="Default.aspx.cs" Inherits="TabStripMultiPageRadGrid._Default" %>
     
    <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
    <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
    <script type="text/javascript">
     
        function onRequestStart(sender, args) {
            if ((args.get_eventTarget().indexOf("RadGrid1") >= 0)) {
                if (args.get_eventArgument().indexOf("ExportToExcel") ||
                        args.get_eventArgument().indexOf("ExportToPdf") >= 0 ||
                        args.get_eventArgument().indexOf("ExportToCsv") >= 0) {
                    args.set_enableAjax(false);
                }
            }
        }
         
    </script>
    </asp:Content>
    <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
        <telerik:RadScriptManager ID="RadScriptManager1" runat="server">
        </telerik:RadScriptManager>
        <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"  ClientEvents-OnRequestStart="onRequestStart">
            <AjaxSettings>
                <telerik:AjaxSetting AjaxControlID="RadTabStrip1">
                    <UpdatedControls>
                        <telerik:AjaxUpdatedControl ControlID="RadTabStrip1" />
                    </UpdatedControls>
                </telerik:AjaxSetting>
                <telerik:AjaxSetting AjaxControlID="RadMultiPage1">
                    <UpdatedControls>
                        <telerik:AjaxUpdatedControl ControlID="RadMultiPage1" />
                    </UpdatedControls>
                </telerik:AjaxSetting>
                <telerik:AjaxSetting AjaxControlID="RadGrid1">
                    <UpdatedControls>
                        <telerik:AjaxUpdatedControl ControlID="RadGrid1" />
                    </UpdatedControls>
                </telerik:AjaxSetting>
            </AjaxSettings>
             
        </telerik:RadAjaxManager>
        <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />    <br />
        <telerik:RadTabStrip ID="RadTabStrip1" runat="server" MultiPageID="RadMultiPage1">
            <Tabs>
                <telerik:RadTab runat="server" Selected="True" Text="Tabstrip" meta:resourcekey="RadTabResource1">
                </telerik:RadTab>
            </Tabs>
        </telerik:RadTabStrip>
        <telerik:RadMultiPage ID="RadMultiPage1" runat="server" SelectedIndex="0">
            <telerik:RadPageView ID="RadPageView1" runat="server">
                <telerik:RadGrid ID="RadGrid1" runat="server" CellSpacing="0" GridLines="None" DataSourceID="XmlDataSource1"
                    AllowSorting="true">
                    <MasterTableView AutoGenerateColumns="True" DataSourceID="XmlDataSource1" CommandItemDisplay="Top">
                        <CommandItemSettings ShowExportToPdfButton="true" ShowExportToExcelButton="true"
                            ShowExportToCsvButton="true" ShowAddNewRecordButton="false" ShowRefreshButton="false" />
                        <RowIndicatorColumn FilterControlAltText="Filter RowIndicator column">
                            <HeaderStyle Width="20px" />
                        </RowIndicatorColumn>
                        <ExpandCollapseColumn FilterControlAltText="Filter ExpandColumn column">
                            <HeaderStyle Width="20px" />
                        </ExpandCollapseColumn>
                        <Columns>
                            <telerik:GridBoundColumn DataField="id" FilterControlAltText="Filter id column" HeaderText="id"
                                SortExpression="id" UniqueName="id">
                            </telerik:GridBoundColumn>
                        </Columns>
                        <EditFormSettings>
                            <EditColumn FilterControlAltText="Filter EditCommandColumn column">
                            </EditColumn>
                        </EditFormSettings>
                    </MasterTableView>
                    <FilterMenu EnableImageSprites="False">
                    </FilterMenu>
                    <HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Default">
                    </HeaderContextMenu>
                </telerik:RadGrid>
                <asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/XMLFile1.xml">
                </asp:XmlDataSource>
            </telerik:RadPageView>
        </telerik:RadMultiPage>
    </asp:Content>

    If I then remove " ClientEvents-OnRequestStart="onRequestStart" ", the sorting works fine without a postback, but the grid no longer exports.

    There is no code behind.
    using System;
     
    namespace TabStripMultiPageRadGrid
    {
        public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
     
            }
        }
    }

    Standard books.xml Data source
    <?xml version="1.0"?>
    <catalog>
      <book id="bk101">
        <author>Gambardella, Matthew</author>
        <title>XML Developer's Guide</title>
        <genre>Computer</genre>
        <price>44.95</price>
        <publish_date>2000-10-01</publish_date>
        <description>
          An in-depth look at creating applications
          with XML.
        </description>
      </book>
      <book id="bk102">
        <author>Ralls, Kim</author>
        <title>Midnight Rain</title>
        <genre>Fantasy</genre>
        <price>5.95</price>
        <publish_date>2000-12-16</publish_date>
        <description>
          A former architect battles corporate zombies,
          an evil sorceress, and her own childhood to become queen
          of the world.
        </description>
      </book>
      <book id="bk103">
        <author>Corets, Eva</author>
        <title>Maeve Ascendant</title>
        <genre>Fantasy</genre>
        <price>5.95</price>
        <publish_date>2000-11-17</publish_date>
        <description>
          After the collapse of a nanotechnology
          society in England, the young survivors lay the
          foundation for a new society.
        </description>
      </book>
      <book id="bk104">
        <author>Corets, Eva</author>
        <title>Oberon's Legacy</title>
        <genre>Fantasy</genre>
        <price>5.95</price>
        <publish_date>2001-03-10</publish_date>
        <description>
          In post-apocalypse England, the mysterious
          agent known only as Oberon helps to create a new life
          for the inhabitants of London. Sequel to Maeve
          Ascendant.
        </description>
      </book>
      <book id="bk105">
        <author>Corets, Eva</author>
        <title>The Sundered Grail</title>
        <genre>Fantasy</genre>
        <price>5.95</price>
        <publish_date>2001-09-10</publish_date>
        <description>
          The two daughters of Maeve, half-sisters,
          battle one another for control of England. Sequel to
          Oberon's Legacy.
        </description>
      </book>
      <book id="bk106">
        <author>Randall, Cynthia</author>
        <title>Lover Birds</title>
        <genre>Romance</genre>
        <price>4.95</price>
        <publish_date>2000-09-02</publish_date>
        <description>
          When Carla meets Paul at an ornithology
          conference, tempers fly as feathers get ruffled.
        </description>
      </book>
      <book id="bk107">
        <author>Thurman, Paula</author>
        <title>Splish Splash</title>
        <genre>Romance</genre>
        <price>4.95</price>
        <publish_date>2000-11-02</publish_date>
        <description>
          A deep sea diver finds true love twenty
          thousand leagues beneath the sea.
        </description>
      </book>
      <book id="bk108">
        <author>Knorr, Stefan</author>
        <title>Creepy Crawlies</title>
        <genre>Horror</genre>
        <price>4.95</price>
        <publish_date>2000-12-06</publish_date>
        <description>
          An anthology of horror stories about roaches,
          centipedes, scorpions  and other insects.
        </description>
      </book>
      <book id="bk109">
        <author>Kress, Peter</author>
        <title>Paradox Lost</title>
        <genre>Science Fiction</genre>
        <price>6.95</price>
        <publish_date>2000-11-02</publish_date>
        <description>
          After an inadvertant trip through a Heisenberg
          Uncertainty Device, James Salway discovers the problems
          of being quantum.
        </description>
      </book>
      <book id="bk110">
        <author>O'Brien, Tim</author>
        <title>Microsoft .NET: The Programming Bible</title>
        <genre>Computer</genre>
        <price>36.95</price>
        <publish_date>2000-12-09</publish_date>
        <description>
          Microsoft's .NET initiative is explored in
          detail in this deep programmer's reference.
        </description>
      </book>
      <book id="bk111">
        <author>O'Brien, Tim</author>
        <title>MSXML3: A Comprehensive Guide</title>
        <genre>Computer</genre>
        <price>36.95</price>
        <publish_date>2000-12-01</publish_date>
        <description>
          The Microsoft MSXML3 parser is covered in
          detail, with attention to XML DOM interfaces, XSLT processing,
          SAX and more.
        </description>
      </book>
      <book id="bk112">
        <author>Galos, Mike</author>
        <title>Visual Studio 7: A Comprehensive Guide</title>
        <genre>Computer</genre>
        <price>49.95</price>
        <publish_date>2001-04-16</publish_date>
        <description>
          Microsoft Visual Studio 7 is explored in depth,
          looking at how Visual Basic, Visual C++, C#, and ASP+ are
          integrated into a comprehensive development
          environment.
        </description>
      </book>
    </catalog>

    I have hosted the solution here for your reference: Download

  2. Zhi
    Zhi avatar
    9 posts
    Member since:
    Sep 2010

    Posted 25 Jan 2012 Link to this post

    Any ideas? It should be really simple and I must have just missed something.
  3. Iana Tsolova
    Admin
    Iana Tsolova avatar
    3388 posts

    Posted 26 Jan 2012 Link to this post

    Hello Zhi,

    Try modifying the javascript and the ajax settings as below and let me know if it works for you:
    <script type="text/javascript">
        function onRequestStart(sender, args) {
            if (args.get_eventTarget().indexOf("ExportToExcel") >= 0 ||
                    args.get_eventTarget().indexOf("ExportToPdf") >= 0 ||
                    args.get_eventTarget().indexOf("ExportToCsv") >= 0) {
                args.set_enableAjax(false);
            }
        }
    </script>
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"
        ClientEvents-OnRequestStart="onRequestStart">
        <AjaxSettings>
            <telerik:AjaxSetting AjaxControlID="RadTabStrip1">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="RadTabStrip1" />
                    <telerik:AjaxUpdatedControl ControlID="RadMultiPage1" />
                </UpdatedControls>
            </telerik:AjaxSetting>
            <telerik:AjaxSetting AjaxControlID="RadMultiPage1">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="RadTabStrip1" />
                    <telerik:AjaxUpdatedControl ControlID="RadMultiPage1" />
                </UpdatedControls>
            </telerik:AjaxSetting>
        </AjaxSettings>
    </telerik:RadAjaxManager>

    Additionally, if the issue you are facing is urgent and you need timely response, I would suggest that you open a formal support ticket, which with your current subscription will have guaranteed 24h response.

    Regards,
    Iana Tsolova
    the Telerik team
    If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now
  4. Zhi
    Zhi avatar
    9 posts
    Member since:
    Sep 2010

    Posted 31 Jan 2012 Link to this post

    Thank you.

    Turns out I needed to use get_eventTarget() instead of get_eventArgument .

    Worked.
Back to Top