public ActionResult SearchPage(ProductsListViewModel model) { var searchResults = productSearchManager.Search(new SearchOptions { Query = model.Query, PageNumber = model.PageNumber, ResultFields = ProductFields.AllExcept(ProductFields.Description), PageSize = model.PageSize, InverseSort = model.InverseSort, SortField = model.SortField }); model.RelevantSortTypeAvailable = true; model.Items = Mapper.Map <IList <ProductListItemViewModel> >(searchResults.Items); model.TotalItemsCount = searchResults.TotalCount; return(View("List", model)); }
public string RenderHTML() { if (_Cache.ContainsKey(_productID)) { return(_Cache[_productID]); } ProductQuery query = new ProductQuery(); Product pT = Products.GetProduct(_productID); query.ProductNameFilter = pT.ProductName; query.PageSize = Int32.MaxValue; query.ProductOrderBy = ProductOrderBy.DisplayOrder; query.SortOrder = SortOrder.Descending; query.PageSize = int.MaxValue; query.HasPublished = true; SearchResultDataSet <Product> ps = ProductSearchManager.Search(query); if (ps == null || ps.Records == null || ps.Records.Count == 0 || (ps.Records.Count == 1 && ps.Records[0].ProductID == _productID)) { return("<div class=\"nopiInfo\"><span>没有相关产品信息!</span></div>"); } string nav = GlobalSettings.RelativeWebRoot + "pages/view.aspx?product-product"; List <Product> psList = null; Product p = null; StringBuilder sb = new StringBuilder(); int curCount = ps.Records.Count; psList = ps.Records.GetRange(0, Math.Min(curCount, _Max)); sb.AppendLine("<table cellpadding=\"0\" cellspacing=\"0\" class=\"" + _CssClass + "\">"); string pId = string.Empty; int length = psList.Count; string pn = string.Empty; for (int i = 0; i < psList.Count; i++) { p = psList[i]; if (p.ProductID == _productID) { continue; } if (i % _Columns == 0) { sb.AppendLine("<tr>"); } pId = GlobalSettings.Encrypt(p.ProductID.ToString()); sb.AppendLine("<td>"); sb.AppendLine("<div class=\"piThumbnail\">" + "<a href=\"" + nav + "&ID=" + pId + "\" target=\"_blank\">" + "<div style=\"background-image:url(" + p.GetDefaultImageUrl(100, 100) + ")\" title=\"" + HtmlHelper.RemoveHtml(p.ProductName) + "\" >" + "</div>" + "</a>" + "</div>"); pn = HtmlHelper.RemoveHtml(p.ProductName); sb.AppendLine("<div class=\"piProductName\" title='" + pn + "'>" + GlobalSettings.SubString(pn, 15) + "</div>"); sb.AppendLine("<div class=\"piPrice\">" + GetPrice(p.ProductID) + "</div>"); sb.AppendLine("</td>"); if (i % _Columns == _Columns - 1) { sb.AppendLine("</tr>"); } } sb.AppendLine("</table>"); if (!_Cache.ContainsKey(_productID)) { lock (_lock) if (!_Cache.ContainsKey(_productID)) { if (_Cache.Count > maxCached) { _Cache.Clear(); } _Cache.Add(_productID, sb.ToString()); } } return(sb.ToString()); }
void BindData() { ProductQuery query = this.Query; lnkGrid.PostBackUrl = Request.RawUrl; lnkList.PostBackUrl = Request.RawUrl; lnkGrid.Attributes.Add("rel", "grid"); lnkList.Attributes.Add("rel", "list"); #region -Adapt Show- string s = Request.QueryString["s"]; if (!string.IsNullOrEmpty(s)) { switch (s) { case "grid": lnkGrid.CssClass = "showByGrid showBy showByGridActive"; lnkList.CssClass = "showByList showBy"; cpProduct.PageSize = 10; break; case "list": lnkList.CssClass = "showByList showBy showByListActive"; lnkGrid.CssClass = "showByGrid showBy"; cpProduct.PageSize = 50; break; } } else { cpProduct.PageSize = 10; s = "grid"; lnkGrid.CssClass = "showByGrid showBy showByGridActive"; lnkList.CssClass = "showByList showBy"; } #endregion #region -BindData- string sortBy = Request.QueryString["sortby"]; ProductOrderBy orderBy = ProductOrderBy.DisplayOrder; SortOrder sortOrder = SortOrder.Descending; if (!string.IsNullOrEmpty(sortBy)) { try { ddlSortBy.Items.FindByValue(sortBy).Selected = true; } catch { ddlSortBy.SelectedIndex = 0; } GetData(out orderBy, out sortOrder, sortBy); } query.ProductOrderBy = orderBy; query.SortOrder = sortOrder; query.PageSize = int.MaxValue; query.HasPublished = true; List <Product> prods = null; if (!IsSearch) { prods = Products.GetProducts(query).Records; } else { if (string.IsNullOrEmpty(query.ProductNameFilter)) { prods = Products.GetProducts(query).Records; } else { SearchResultDataSet <Product> _pros = ProductSearchManager.Search(query); prods = _pros.Records; pnlSearch.Visible = true; ltSearchDuration.Text = "搜索用时:" + _pros.SearchDuration.ToString() + "秒。"; } } if (prods == null || prods.Count == 0) { msgBox.ShowMsg("没有符合条件的产品存在!", System.Drawing.Color.Gray); return; } msgBox.HideMsg(); bool islogin = Context.User.Identity.IsAuthenticated; if (orderBy == ProductOrderBy.Price) { prods.Sort(new SortProductByPrice(sortOrder, (islogin ? Profile.AccountInfo.UserID : 0), islogin )); } if (s == "grid") { dlProduct2.Visible = false; dlProduct.Visible = true; cpProduct.DataSource = prods; cpProduct.BindToControl = dlProduct; dlProduct.DataSource = cpProduct.DataSourcePaged; dlProduct.DataBind(); } else { dlProduct.Visible = false; dlProduct2.Visible = true; cpProduct.DataSource = prods; cpProduct.BindToControl = dlProduct2; dlProduct2.DataSource = cpProduct.DataSourcePaged; dlProduct2.DataBind(); } #endregion }