private void BindSearchResultsPanel()
        {
            Trace.Write(this.GetType().ToString(), "Begin Bind Search Results");
            if (_contentNodes.Count > 0)
            {
                //SORT THE CATEGORIES ACCORDINGLY
                string sortExpression = SortResults.SelectedValue;
                if (!string.IsNullOrEmpty(sortExpression))
                {
                    string[] sortTokens = sortExpression.Split(" ".ToCharArray());
                    System.Web.UI.WebControls.SortDirection dir = (sortTokens[1] == "ASC" ? System.Web.UI.WebControls.SortDirection.Ascending : System.Web.UI.WebControls.SortDirection.Descending);
                    switch (sortTokens[0])
                    {
                    case "Featured":
                        _contentNodes.Sort(new FeaturedComparer(dir));
                        break;

                    case "Price":
                        _contentNodes.Sort(new PriceComparer(dir));
                        break;

                    case "Name":
                        _contentNodes.Sort(new NameComparer(dir));
                        break;

                    case "Manufacturer":
                        _contentNodes.Sort(new ManufacturerComparer(dir));
                        break;
                    }
                }

                phCategoryContents.Visible = true;
                //INITIALIZE PAGING VARIABLES
                InitializePagingVars(false);
                //BIND THE RESULT PANE
                BindResultHeader();
                //BIND THE PAGING CONTROLS FOOTER
                BindPagingControls();
            }
            else
            {
                ResultIndexMessage.Text = string.Format(ResultIndexMessage.Text, 0, 0, 0);
                //HIDE THE CONTENTS
                phCategoryContents.Visible = false;
                phEmptyCategory.Visible    = (_category != null && _category.CatalogNodes.Count == 0);
                phNoSearchResults.Visible  = !phEmptyCategory.Visible;
            }
            //UPDATE AJAX PANEL
            SearchResultsAjaxPanel.Update();
            Trace.Write(this.GetType().ToString(), "End Bind Search Results");
        }
Esempio n. 2
0
 private void BindSearchResultsPanel()
 {
     Trace.Write(this.GetType().ToString(), "Begin Bind Search Results");
     //INITIALIZE PAGING VARIABLES
     InitializePagingVars(false);
     //BIND THE RESULT HEADER
     BindResultHeader();
     //BIND THE PRODUCT LIST
     BindProductList();
     //BIND THE PAGING CONTROLS FOOTER
     BindPagingControls();
     //UPDATE AJAX PANEL
     SearchResultsAjaxPanel.Update();
     Trace.Write(this.GetType().ToString(), "End Bind Search Results");
 }
Esempio n. 3
0
        protected void BindProductList()
        {
            var products = ProductDataSource.AdvancedSearch(_keywords, _categoryId, _manufacturerId, true, true, true, 0, 0, PageHelper.GetShopByChoices(), _pageSize, (_hiddenPageIndex * _pageSize), SortResults.SelectedValue);

            // DELAYED QUERIES TO EAGER LOAD RELATED DATA FOR PERFORMANCE BOOST
            if (products.Count < 415)
            {
                List <int> ids = products.Select(p => p.Id).ToList <int>();

                var futureQuery = NHibernateHelper.QueryOver <Product>()
                                  .AndRestrictionOn(p => p.Id).IsIn(ids)
                                  .Fetch(p => p.Specials).Eager
                                  .Future <Product>();

                NHibernateHelper.QueryOver <Product>()
                .AndRestrictionOn(p => p.Id).IsIn(ids)
                .Fetch(p => p.ProductOptions).Eager
                .Future <Product>();

                NHibernateHelper.QueryOver <Product>()
                .AndRestrictionOn(p => p.Id).IsIn(ids)
                .Fetch(p => p.ProductKitComponents).Eager
                .Future <Product>();

                NHibernateHelper.QueryOver <Product>()
                .AndRestrictionOn(p => p.Id).IsIn(ids)
                .Fetch(p => p.ProductTemplates).Eager
                .Future <Product>();

                NHibernateHelper.QueryOver <Product>()
                .AndRestrictionOn(p => p.Id).IsIn(ids)
                .Fetch(p => p.Reviews).Eager
                .Future <Product>();

                futureQuery.ToList();
            }

            ProductList.DataSource = products;
            ProductList.DataBind();
            NoSearchResults.Visible = (_searchResultCount == 0);
            int minimumPageSize = AlwaysConvert.ToInt(PageSizeOptions.Items[0].Value);
            int totalResults    = ProductDataSource.AdvancedSearchCount(_keywords, this._categoryId, _manufacturerId, true, true, true, 0, 0, false, PageHelper.GetShopByChoices());

            PageSizePanel.Visible = totalResults > minimumPageSize;
            SearchResultsAjaxPanel.Update();
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            CategoryBreadCrumbs1.Visible    = DisplayBreadCrumbs;
            CategoryBreadCrumbs1.CategoryId = this.CategoryId;

            //BIND THE DISPLAY ELEMENTS
            if (IsValidCategory())
            {
                if (_Category != null)
                {
                    Caption.Text = _Category.Name;

                    if (!string.IsNullOrEmpty(_Category.Summary) && ShowSummary)
                    {
                        CategorySummaryPanel.Visible = true;
                        CategorySummary.Text         = _Category.Summary;
                    }
                    else
                    {
                        CategorySummaryPanel.Visible = false;
                    }

                    if (!string.IsNullOrEmpty(_Category.Description) && ShowDescription)
                    {
                        CategoryDescriptionPanel.Visible = true;
                        CategoryDescription.Text         = _Category.Description;
                    }
                    else
                    {
                        CategoryDescriptionPanel.Visible = false;
                    }
                }
                else
                {
                    // IF IT IS ROOT CATEGORY
                    Caption.Text = DefaultCaption;
                }

                BindSubCategories();

                if (_Category != null)
                {
                    //UPDATE THE RESULT INDEX MESSAGE
                    _totalProducts = ProductDataSource.CountForCategory(true, _Category.Id, false, true);
                }

                //INITIALIZE PAGING VARIABLES
                InitializePagingVars(false);

                int startRowIndex = (_PageSize * _HiddenPageIndex);
                int endRowIndex   = startRowIndex + _PageSize;
                if (endRowIndex > _totalProducts)
                {
                    endRowIndex = _totalProducts;
                }
                if (_totalProducts == 0)
                {
                    startRowIndex = -1;
                }

                ResultIndexMessage.Text = string.Format(ResultIndexMessage.Text, (startRowIndex + 1), endRowIndex, _totalProducts);
                if (_Category != null)
                {
                    var products = ProductDataSource.LoadForCategory(true, _Category.Id, false, true, SortResults.SelectedValue, PageSize, startRowIndex);
                    if (products.Count > 0)
                    {
                        var productIds = products.Select(p => p.Id)
                                         .ToList <int>();

                        var futureQuery = NHibernateHelper.QueryOver <Product>()
                                          .AndRestrictionOn(p => p.Id).IsIn(productIds)
                                          .Fetch(p => p.Manufacturer).Eager
                                          .Fetch(p => p.Specials).Eager
                                          .Future <Product>();

                        NHibernateHelper.QueryOver <Product>()
                        .AndRestrictionOn(p => p.Id).IsIn(productIds)
                        .Fetch(p => p.ProductOptions).Eager
                        .Future <Product>();

                        NHibernateHelper.QueryOver <Product>()
                        .AndRestrictionOn(p => p.Id).IsIn(productIds)
                        .Fetch(p => p.ProductKitComponents).Eager
                        .Future <Product>();

                        NHibernateHelper.QueryOver <Product>()
                        .AndRestrictionOn(p => p.Id).IsIn(productIds)
                        .Fetch(p => p.ProductTemplates).Eager
                        .Future <Product>();

                        NHibernateHelper.QueryOver <Product>()
                        .AndRestrictionOn(p => p.Id).IsIn(productIds)
                        .Fetch(p => p.Reviews).Eager
                        .Future <Product>();

                        futureQuery.ToList();
                    }

                    CatalogNodeList.DataSource = products;
                    CatalogNodeList.DataBind();
                }

                if (_totalProducts > 0)
                {
                    phCategoryContents.Visible = true;

                    //BIND THE PAGING CONTROLS FOOTER
                    BindPagingControls();
                }
                else
                {
                    ResultIndexMessage.Text = string.Format(ResultIndexMessage.Text, 0, 0, 0);

                    //HIDE THE CONTENTS
                    phCategoryContents.Visible = false;
                    phEmptyCategory.Visible    = (_Category != null && _Category.CatalogNodes.Count == 0);
                    phNoSearchResults.Visible  = !phEmptyCategory.Visible;
                }

                //UPDATE AJAX PANEL
                SearchResultsAjaxPanel.Update();
            }
            else
            {
                CategoryHeaderPanel.Visible = false;
            }

            int manufecturerCount = ManufacturerDataSource.CountAll();

            foreach (ListItem li in SortResults.Items)
            {
                if (li.Value.StartsWith("Manufacturer"))
                {
                    li.Enabled = manufecturerCount > 0;
                }
            }
        }