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

Radgrid performance Issue with more records

1 Answer 162 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Babu Puchakayala
Top achievements
Rank 1
Babu Puchakayala asked on 25 Jun 2010, 08:11 PM
Hi, I recently bought Telerik controls.  I am getting performance issue with radgrid.

1. I implemented paging to the radgrid with 6000 records. And i created viewall option on rg402_ItemCreated to the radcombo.  When i select viewall its taking 20 sec to bind the data to the grid and after that the brower gets stuck( both Firefox 3.6.4 and IE7)  and displaying the error(Please find attached Image). Is there anyway to change the viewall option code to get the data fast. or is there anyway to improve the performance and decrease the time of records binding.

Here is my code.

.aspx code
<style type="text/css"
        .rgPageFirst, .rgPagePrev, .rgPageNext, .rgPageLast 
        { 
            display: none !important; 
        } 
        div.RadGrid_Default .rgHeader, div.RadGrid_Default th.rgResizeCol 
        { 
            background-image: none; 
        } 
    </style> 
 
    <script type="text/javascript"
        function onRequestStart(sender, args) { 
            if (args.get_eventTarget().indexOf("ExportToExcelButton") >= 0 || 
                    args.get_eventTarget().indexOf("ExportToWordButton") >= 0 || 
                    args.get_eventTarget().indexOf("ExportToPdfButton") >= 0 || 
                    args.get_eventTarget().indexOf("ExportToCsvButton") >= 0) { 
 
                args.set_enableAjax(false); 
            } 
        } 
    </script> 
 
    <div> 
        <tr> 
            <td colspan="2"
                <asp:Label runat="server" Font-Bold="true" Font-Size="14pt" ID="lblTskName"></asp:Label> 
            </td> 
        </tr> 
        <br /> 
    </div> 
    <div> 
        <telerik:RadScriptManager ID="RadScriptManager1" runat="server"
        </telerik:RadScriptManager> 
        <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"
            <ClientEvents OnRequestStart="onRequestStart" /> 
            <AjaxSettings> 
                <telerik:AjaxSetting AjaxControlID="rg402"
                    <UpdatedControls> 
                        <telerik:AjaxUpdatedControl ControlID="rg402" LoadingPanelID="RadAjaxLoadingPanel1" /> 
                    </UpdatedControls> 
                </telerik:AjaxSetting> 
            </AjaxSettings> 
        </telerik:RadAjaxManager> 
        <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Skin="Default"
        </telerik:RadAjaxLoadingPanel> 
        <telerik:RadGrid ID="rg402" runat="server" AutoGenerateColumns="false" Height="550px" 
            OnNeedDataSource="rg402_NeedDataSource" Width="120%" AllowPaging="True" AllowSorting="True" 
            AllowMultiRowSelection="True" EnableHeaderContextMenu="true" GridLines="None" 
            EnableHeaderContextFilterMenu="true" AllowMultiRowEdit="true" AllowFilteringByColumn="True" 
            OnPreRender="rg402_PreRender" OnItemCreated="rg402_ItemCreated" EnableViewState="false"
            <HeaderStyle HorizontalAlign="Center" BorderWidth="1px" Font-Bold="true" Font-Size="8pt" /> 
            <ExportSettings IgnorePaging="true" ExportOnlyData="true"
                <Pdf AllowModify="false" AllowPrinting="true" PageBottomMargin="" PageFooterMargin="" 
                    PageHeaderMargin="" PageHeight="11in" PageLeftMargin="" PageRightMargin="" PageTopMargin="" 
                    PageWidth="14in" /> 
            </ExportSettings> 
            <MasterTableView DataKeyNames="orderId" CommandItemDisplay="Top" EditMode="InPlace" 
                PageSize="30"
                <CommandItemSettings ShowExportToWordButton="true" ShowExportToExcelButton="true" 
                    ShowExportToCsvButton="true" ShowExportToPdfButton="true" ShowAddNewRecordButton="false" /> 
                <Columns> 
                    <telerik:GridClientSelectColumn UniqueName="ClientSelectColumn" HeaderStyle-Width="3%" 
                        ItemStyle-Width="3%"
                    </telerik:GridClientSelectColumn> 
                    <telerik:GridBoundColumn UniqueName="sId" HeaderText="sId" DataField="sId" Visible="false"
                    </telerik:GridBoundColumn> 
                    <telerik:GridBoundColumn UniqueName="orderId" HeaderText="orderId" DataField="orderId" 
                        Visible="false"
                    </telerik:GridBoundColumn> 
                    <telerik:GridBoundColumn UniqueName="Customer Name" HeaderText="Customer Name" DataField="Customer Name" 
                        ReadOnly="true"
                    </telerik:GridBoundColumn> 
                    <telerik:GridBoundColumn UniqueName="Market Name" HeaderText="Market Name" DataField="Market Name" 
                        ReadOnly="true"
                    </telerik:GridBoundColumn> 
                    <telerik:GridBoundColumn UniqueName="LOB" HeaderText="LOB" DataField="LOB" ReadOnly="true"
                    </telerik:GridBoundColumn> 
                    <telerik:GridBoundColumn UniqueName="Headend Name" HeaderText="Headend Name" DataField="Headend Name" 
                        ReadOnly="true"
                    </telerik:GridBoundColumn> 
                    <telerik:GridBoundColumn UniqueName="Project Name" HeaderText="Project Name" DataField="Project Name" 
                        ReadOnly="true"
                    </telerik:GridBoundColumn> 
                    <telerik:GridHyperLinkColumn UniqueName="Site Name" HeaderText="Site Name" DataTextField="Site Name"
                    </telerik:GridHyperLinkColumn> 
                    <telerik:GridBoundColumn UniqueName="Task Status" HeaderText="Task Status" DataField="Task Status" 
                        ReadOnly="true"
                    </telerik:GridBoundColumn> 
                    <telerik:GridBoundColumn UniqueName="Plant Test Date" HeaderText="Plant Test Date" 
                        DataField="Plant Test Date" ReadOnly="true"
                    </telerik:GridBoundColumn> 
                    <telerik:GridBoundColumn UniqueName="CORE CM Number" HeaderText="CORE CM Number" 
                        DataField="CORE CM Number" ReadOnly="true"
                    </telerik:GridBoundColumn> 
                    <telerik:GridBoundColumn UniqueName="Req SM Imp Date" HeaderText="Req SM Imp Date" 
                        DataField="Req SM Imp Date" ReadOnly="true"
                    </telerik:GridBoundColumn> 
                    <telerik:GridBoundColumn UniqueName="SM Ticket Number" HeaderText="SM Ticket Number" 
                        DataField="SM Ticket Number"
                    </telerik:GridBoundColumn> 
                    <telerik:GridBoundColumn UniqueName="Sch SM Imp Date" HeaderText="Sch SM Imp Date" 
                        DataField="Sch SM Imp Date"
                    </telerik:GridBoundColumn> 
                    <telerik:GridEditCommandColumn UniqueName="ECC402"
                    </telerik:GridEditCommandColumn> 
                </Columns> 
            </MasterTableView> 
            <ClientSettings EnableRowHoverStyle="true" ReorderColumnsOnClient="false" AllowDragToGroup="false" 
                AllowColumnsReorder="True"
                <Scrolling AllowScroll="true" UseStaticHeaders="true" /> 
                <Selecting AllowRowSelect="True"></Selecting> 
                <Resizing AllowRowResize="true" AllowColumnResize="True" EnableRealTimeResize="True" 
                    ResizeGridOnColumnResize="False"></Resizing> 
            </ClientSettings> 
            <PagerStyle Mode="NextPrevAndNumeric"></PagerStyle> 
        </telerik:RadGrid> 

.cs fine

protected void Page_Load(object sender, EventArgs e) 
    { 
        try 
        { 
            if (!IsPostBack) 
            { 
                Session["SearchRes"] = null; 
                if (Session["TaskName"] != null) 
                    lblTskName.Text = Session["TaskName"].ToString(); 
                Session["FilColms"] = null; 
                Session["SortExp"] = null; 
                Session["FilExp"] = null; 
                Session["ViewAll"] = null; 
                BindGrid(); 
            } 
        } 
        catch (Exception ex) 
        { 
            throw ex; 
        } 
    } 
 
    private void BindGrid() 
    { 
        try 
        { 
            DataSet dsResult = new DataSet(); 
 
            clsSearch_BL clsObj = new clsSearch_BL(); 
            clsObj.TaskID = (string)Session["TaskID"]; 
            clsObj.CustName = (string)Session["CustName"]; 
            clsObj.MarketName = (string)Session["MarketName"]; 
            clsObj.HeadendName = (string)Session["HeadendName"]; 
            clsObj.SiteName = (string)Session["SiteName"]; 
            clsObj.TaskStatus = (string)Session["TaskStatus"]; 
            clsObj.OrdType = (string)Session["OrdType"]; 
            clsObj.OrdStatus = (string)Session["OrdStatus"]; 
            clsObj.ProName = (string)Session["ProName"]; 
            clsObj.LOC = (string)Session["LOC"]; 
            clsObj.QuoteID = (string)Session["QuoteID"]; 
            clsObj.CMNumber = (string)Session["CMNumber"]; 
 
            if (Session["SearchRes"] == null) 
            { 
                dsResult = clsObj.getSearchResults_BL(clsObj); 
                Session["SearchRes"] = dsResult; 
            } 
            else 
                dsResult = (DataSet)Session["SearchRes"]; 
 
            DataView dataView = dsResult.Tables[0].DefaultView; 
            rg402.DataSource = dsResult
            //rg402.DataBind(); 
        } 
        catch (Exception ex) 
        { 
            throw ex; 
        } 
    } 
 
    protected void rg402_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e) 
    { 
        BindGrid(); 
    } 
 
    protected void rg402_PreRender(object sender, EventArgs e) 
    { 
        rg402.MasterTableView.GetColumnSafe("RowIndicator").Display = false
 
    } 
 
    protected void rg402_ItemCreated(object sender, GridItemEventArgs e) 
    { 
        if (e.Item is GridPagerItem) 
        { 
            RadComboBox combo = (e.Item as GridPagerItem).FindControl("PageSizeComboBox") as RadComboBox; 
 
            // The number of items shown when all is selected  
            int allRowsCount = int.MaxValue; 
 
            // Remove duplicates  
            RadComboBoxItem duplicate = combo.Items.FindItemByValue(allRowsCount.ToString()); 
            if (duplicate != null) 
            { 
                duplicate.Remove(); 
            } 
 
            // Create a new item for showing all  
            RadComboBoxItem item = new RadComboBoxItem("All", allRowsCount.ToString()); 
            item.Attributes.Add("ownerTableViewId", e.Item.OwnerTableView.ClientID); 
            combo.Items.Add(item); 
 
            // Set the current pagesize as the selected value  
            combo.Items.FindItemByValue(rg402.PageSize.ToString()).Selected = true
        } 
    } 


1 Answer, 1 is accepted

Sort by
0
Pavlina
Telerik team
answered on 01 Jul 2010, 08:23 AM
Hi Babu,

Tips on how to optimize the RadGrid performance using different techniques can be found in the online resources linked below:

http://www.telerik.com/help/aspnet-ajax/gridoverview.html (Chapter "Performance tips and tricks")
http://www.telerik.com/products/aspnet-ajax/resources/top-performance.aspx
http://www.telerik.com/support/aspnet-ajax.aspx (Section "Performance")

Moreover, you can examine the demos from the 'Performance' section of the RadGrid QSF which apply those methods in reality:

http://demos.telerik.com/aspnet-ajax/grid/examples/overview/defaultcs.aspx 

Additionally, to improve the performance of RadComboBox you can use its Load On Demand mechanism.

I hope this helps.

All the best,
Pavlina
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
Tags
Grid
Asked by
Babu Puchakayala
Top achievements
Rank 1
Answers by
Pavlina
Telerik team
Share this question
or