Caching datasource / Performance improvement while databindi

Posted by Community Admin on 04-Aug-2018 04:06

Caching datasource / Performance improvement while databinding to gridview

All Replies

Posted by Community Admin on 02-Aug-2014 00:00

Hi Team,

 I am able to bind gridview with paging enabled in Sitefinity 7.0. The problem is I have approximately 2.5 lakh records which is huge. So I wanted to either make it a server side paging or cache the entire datasource. I failed in both. Please look at my code below both ascx and ascx.cs. The code am pasting here is calling the method BindProducts() for every click which makes it a performance problem. Please help

ASCX

 <asp:GridView AllowPaging="true" GridLines="None" OnPageIndexChanging="gvProducts_PageIndexChanging" PagerStyle-CssClass="paging"
            PageSize="10" CssClass="product-list desktop-product-list" runat="server" ID="gvProducts" AutoGenerateColumns="false">
            <Columns>
                <asp:TemplateField>
                    <HeaderTemplate>
                        <asp:Label ID="lblSKUHdr" runat="server" Text="SKU"></asp:Label>
                    </HeaderTemplate>
                    <ItemTemplate>
                        <span data-title="SKU"><%#Eval("SKU") %></span>
                    </ItemTemplate>

                </asp:TemplateField>
                <asp:TemplateField>
                    <HeaderTemplate>
                        <asp:Label ID="lblProdutNameHdr" runat="server" Text="Name"></asp:Label>
                    </HeaderTemplate>
                    <ItemTemplate>

                        <a href='<%# string.Concat(BaseUrl,"/?sku=",Eval("SKU")) %>'><%#Eval("Title") %></a>
                    </ItemTemplate>

                </asp:TemplateField>
                <asp:TemplateField>
                    <HeaderTemplate>
                        <asp:Label ID="lblMfrHdr" runat="server" Text="Manufacturer"></asp:Label>
                    </HeaderTemplate>
                    <ItemTemplate>
                        BIO-RAD Laboratories
                    </ItemTemplate>

                </asp:TemplateField>

                <asp:TemplateField>
                    <HeaderTemplate>
                        <asp:Label ID="lblSizeHdr" runat="server" Text="Size"></asp:Label>
                    </HeaderTemplate>
                    <ItemTemplate>
                        EA
                    </ItemTemplate>

                </asp:TemplateField>

                <asp:TemplateField>
                    <HeaderTemplate>
                        <asp:Label ID="lblPriceHdr" runat="server" Text="Price"></asp:Label>
                    </HeaderTemplate>
                    <ItemTemplate>
                        $15.00
                    </ItemTemplate>

                </asp:TemplateField>

                <asp:TemplateField>
                    <HeaderTemplate>
                        <asp:Label ID="lblStockHdr" runat="server" Text="Stock"></asp:Label>
                    </HeaderTemplate>
                    <ItemTemplate>
                        Special Order
                    </ItemTemplate>

                </asp:TemplateField>

                <asp:TemplateField>

                    <ItemTemplate>
                        Add to cart
                    </ItemTemplate>

                </asp:TemplateField>

            </Columns>
        </asp:GridView>

Ascx.cs


        private string _baseURL;

        public string BaseUrl
       
            get return _baseURL;
            set
           
                _baseURL = this.ResolveUrl(value);

           
       


        protected void Page_Load(object sender, EventArgs e)
       
            if (!IsPostBack)
           
                BindProducts();
           
       


        public void BindProducts()
       
            try
           
                CatalogManager catalogManager = CatalogManager.GetManager();
                gvProducts.DataSource = catalogManager.GetProductsInStockAndActive();
                gvProducts.DataBind();
           
            catch (Exception ex)
           
                Log.Write(ex, System.Diagnostics.TraceEventType.Error);
           
       

        protected void gvProducts_PageIndexChanging(object sender, GridViewPageEventArgs e)
       
            gvProducts.PageIndex = e.NewPageIndex;
            BindProducts();
       
   

 

 

Posted by Community Admin on 06-Aug-2014 00:00

Hi Praneth,

Binding your data on every postback cannot go without performance problems. What you can do in order to avoid them is to use Telerik's RadGrid. The RadGrid presents the NeedDataSource event which is part enables you to do advanced binding thus lowering the performance overhead.

Regards,
Ivan D. Dimitrov
Telerik

 
Do you want to have your say in the Sitefinity development roadmap? Do you want to know when a feature you requested is added or when a bug fixed? Explore the Telerik Sitefinity CMS Ideas&Feedback Portal and vote to affect the priority of the items
 

This thread is closed