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"); }
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"); }
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; } } }