The Core Search Results Web Part can give a page size for up to 50 items, but you may also be able to overwrite that via the extension.
The webpart now reads the sort criteria and direction from the query-string, as well as an extra parameter that allows the user to specify whether the results should be paged at all or displayed in a single page. If they are paged, rather than using the limit of 50, a custom web part property is being used, which is in this example set to a default of 100.
[ToolboxItemAttribute(false)]
public class ExtendedSearchResultsWebPart : CoreResultsWebPart
{
int customResultsPerPage = 100;
[Personalizable(PersonalizationScope.Shared)]
[WebBrowsable(true)]
[WebDescription("Results per page")]
[WebDisplayName("Results per page")]
[Category("Custom")]
public int CustomResultsPerPage { get{ return customResultsPerPage;} set { value = customResultsPerPage;} }
protected override void ConfigureDataSourceProperties()
{
if (this.ShowSearchResults)
{
base.ConfigureDataSourceProperties();
try
{
bool viewAll = false;
string sortBy = string.Empty;
Microsoft.Office.Server.Search.Query.SortDirection sd = Microsoft.Office.Server.Search.Query.SortDirection.Descending;
if (this.Page.Request.QueryString["pall"] != null)
{
if (this.Page.Request.QueryString["pall"] == "1")
viewAll = true;
}
if (this.Page.Request.QueryString["sort"] != null)
{
sortBy = this.Page.Request.QueryString["sort"];
if(this.Page.Request.QueryString["sd"] != null)
{
sd = this.Page.Request.QueryString["sd"] == "ascending" ? Microsoft.Office.Server.Search.Query.SortDirection.Ascending : Microsoft.Office.Server.Search.Query.SortDirection.Descending;
}
}
else sortBy = "MYCUSTOMDEFAULTPROPERY";
// get the datasource and change the sortorder
CoreResultsDatasource dataSource = this.DataSource as CoreResultsDatasource;
dataSource.ResultsPerPage = (viewAll == false ? CustomResultsPerPage : 5000);
if (sortBy != string.Empty)
{
dataSource.SortOrder.Clear();
dataSource.SortOrder.Add(sortBy, sd);
}
}
catch (Exception ex)
{
ULSLogging.LogError("MYLOGGING", "Search: " + ex.Message, ex.StackTrace); }
}
}
}
No comments:
Post a Comment