protected void SortList_Command(object sender, CommandEventArgs e) { SearchResultListRepeater.UpdateSortExpression(e.CommandArgument.ToString()); SavedUserAssetSearch.AssetFinder.OrderBy = OrderBy.Custom; SavedUserAssetSearch.AssetFinder.SortExpressions.Clear(); SavedUserAssetSearch.AssetFinder.SortExpressions.AddRange(SearchResultListRepeater.GetSortExpressions()); Bind(1); }
private void Bind(int page, bool updateAuditLog) { AssetFinder finder = SavedUserAssetSearch.AssetFinder; EntityList <Asset> assets = Asset.FindMany(finder, page - 1, PageSize); if (assets.Count == 0) { NoSearchResultsPanel.Visible = true; SearchResultListRepeater.Visible = false; SearchResultThumbnailsDataList.Visible = false; } else { // Hide the no results panel; we have some assets NoSearchResultsPanel.Visible = false; // Update page size SavedUserAssetSearch.PageSize = PageSize; // Update page SavedUserAssetSearch.Page = page; // Show filters panel if a search term was entered, we're on page 1, and have more than the specified number of results if (!StringUtils.IsBlank(finder.GeneralKeyword) && (page == 1) && (ShowFiltersCount > 0) && (assets.PagingInfo.TotalRecords > ShowFiltersCount)) { PageHeader pageHeader = (PageHeader)SiteUtils.FindControlRecursive(Page, "PageHeader1"); pageHeader.ToggleSearchVisibility(SavedUserAssetSearch.FilterOpen, SavedUserAssetSearch.CategoriesOpen); string message = string.Format("Your search has returned more than {0} results. Use the filters above to refine your search.", ShowFiltersCount); LargeSearchResultFeedbackLabel.SetErrorMessage(message); LargeSearchResultFeedbackLabel.Pinned = true; } else { LargeSearchResultFeedbackLabel.Visible = false; LargeSearchResultFeedbackLabel.Pinned = false; } // Log which assets were returned as part of this search if (updateAuditLog) { int index = 0; foreach (Asset asset in assets) { index++; AuditLogManager.LogAssetInSearchResult(SavedUserAssetSearch.AuditAssetSearchId, asset.AssetId.GetValueOrDefault()); AuditLogManager.LogAssetAction(asset, CurrentUser, AuditAssetAction.ReturnedInSearch, string.Format("Search Criteria: {0}. Total assets: {1}. Displayed on page: {2}, asset number: {3}", finder.GeneralKeyword, assets.PagingInfo.TotalRecords, assets.PagingInfo.CurrentPage + 1, index)); } } // The current view is thumbnails, so ensure we have at last a single row and toggle // the relevant data controls (ie. hide the list repeater and show the thumbnail datalist) if (SavedUserAssetSearch.SearchResultsView == SearchResultsView.Thumbnails) { // In thumbnail view, we need to make sure we have at least one row of assets, or the // layout gets really messed up. Here, we're doing a check, and adding in empty assets // to pad out the asset list to at least a single row. while (assets.Count < SearchResultThumbnailsDataList.RepeatColumns) { assets.Add(Asset.Empty); } SearchResultListRepeater.Visible = false; SearchResultThumbnailsDataList.Visible = true; SearchResultThumbnailsDataList.DataSource = assets; SearchResultThumbnailsDataList.DataBind(); } else { SearchResultListRepeater.Visible = true; SearchResultThumbnailsDataList.Visible = false; SearchResultListRepeater.DataSource = assets; SearchResultListRepeater.DataBind(); } } TopPager.CurrentPage = assets.PagingInfo.CurrentPage + 1; TopPager.PageSize = assets.PagingInfo.PageSize; TopPager.PageCount = assets.PagingInfo.TotalPages; TopPager.ItemCount = assets.PagingInfo.TotalRecords; BottomPager.CurrentPage = TopPager.CurrentPage; BottomPager.PageSize = TopPager.PageSize; BottomPager.PageCount = TopPager.PageCount; BottomPager.ItemCount = TopPager.ItemCount; CurrentPage = page; TotalPages = assets.PagingInfo.TotalPages; AssetCount = assets.PagingInfo.TotalRecords; }