コード例 #1
0
    /// <summary>
    /// Perform search.
    /// </summary>
    protected override void OnPreRender(EventArgs e)
    {
        // Check whether current request is not postback
        if (!RequestHelper.IsPostBack())
        {
            // Get current search text from query string
            string searchText = QueryHelper.GetString("searchtext", "");
            // Check whether search text is defined
            if (!string.IsNullOrEmpty(searchText))
            {
                // Get current search mode from query string
                string searchMode = QueryHelper.GetString("searchmode", "");
                CMS.ISearchEngine.SearchModeEnum searchModeEnum = ISearchHelper.GetSearchModeEnum(searchMode);

                // Get current index id
                int indexId = QueryHelper.GetInteger("indexId", 0);
                // Get current index info object
                SearchIndexInfo sii = SearchIndexInfoProvider.GetSearchIndexInfo(indexId);
                // Check whether index info exists
                if (sii != null)
                {
                    // Keep search text in search textbox
                    //txtSearchFor.Text = searchText;

                    searchText = SearchHelper.CombineSearchCondition(searchText, null, searchModeEnum, SearchOptionsEnum.FullSearch, null, null, null, false);

                    // Get positions and ranges for search method
                    int startPosition     = 0;
                    int numberOfProceeded = 100;
                    int displayResults    = 100;
                    int numberOfResults   = 0;
                    if (pgrSearch.PageSize != 0 && pgrSearch.GroupSize != 0)
                    {
                        startPosition     = (pgrSearch.CurrentPage - 1) * pgrSearch.PageSize;
                        numberOfProceeded = (((pgrSearch.CurrentPage / pgrSearch.GroupSize) + 1) * pgrSearch.PageSize * pgrSearch.GroupSize) + pgrSearch.PageSize;
                        displayResults    = pgrSearch.PageSize;
                    }

                    // Search
                    DataSet results = SearchHelper.Search(searchText, null, null, null, "##ALL##", null, false, false, false, sii.IndexName, displayResults, startPosition, numberOfProceeded, (UserInfo)CMSContext.CurrentUser, out numberOfResults, null, null);

                    // Fill repeater with results
                    repSearchResults.DataSource = results;
                    repSearchResults.PagerForceNumberOfResults = numberOfResults;
                    repSearchResults.DataBind();

                    // Show now results found ?
                    if (numberOfResults == 0)
                    {
                        lblNoResults.Text    = "<br />" + GetString("srch.results.noresults");
                        lblNoResults.Visible = true;
                    }
                }
            }
        }

        base.OnPreRender(e);
    }
コード例 #2
0
    /// <summary>
    /// Perform search.
    /// </summary>
    protected void Search()
    {
        if (StopProcessing)
        {
            // Do nothing
        }
        else
        {
            // Get query strings
            string searchText = QueryHelper.GetString("searchtext", "");
            if (!string.IsNullOrEmpty(searchText))
            {
                string searchMode = QueryHelper.GetString("searchMode", "");
                CMS.ISearchEngine.SearchModeEnum searchModeEnum = CMS.ISearchEngine.SearchHelper.GetSearchModeEnum(searchMode);
                int numberOfResults = 0;

                // Get current culture
                string culture = CultureCode;
                if (string.IsNullOrEmpty(culture))
                {
                    culture = ValidationHelper.GetString(ViewState["CultureCode"], CMSContext.PreferredCultureCode);
                }

                // Get default culture
                string defaultCulture = CultureHelper.GetDefaultCulture(CMSContext.CurrentSiteName);

                // Resolve path
                string path = Path;
                if (!string.IsNullOrEmpty(path))
                {
                    path = CMSContext.ResolveCurrentPath(Path);
                }

                if (CMSContext.ViewMode == ViewModeEnum.LiveSite)
                {
                    // Log on site keywords
                    AnalyticsHelper.LogOnSiteSearchKeywords(CMSContext.CurrentSiteName, CMSContext.CurrentAliasPath, culture, searchText, 0, 1);
                }

                // Prepare search text
                searchText = SearchHelper.CombineSearchCondition(searchText, SearchCondition + FilterSearchCondition, searchModeEnum, SearchOptions, DocumentTypes, culture, defaultCulture, CombineWithDefaultCulture);

                // Get positions and ranges for search method
                int startPosition     = 0;
                int numberOfProceeded = 100;
                int displayResults    = 100;
                if (pgrSearch.PageSize != 0 && pgrSearch.GroupSize != 0)
                {
                    startPosition     = (pgrSearch.CurrentPage - 1) * pgrSearch.PageSize;
                    numberOfProceeded = (((pgrSearch.CurrentPage / pgrSearch.GroupSize) + 1) * pgrSearch.PageSize * pgrSearch.GroupSize) + pgrSearch.PageSize;
                    displayResults    = pgrSearch.PageSize;
                }

                if ((this.MaxResults > 0) && (numberOfProceeded > this.MaxResults))
                {
                    numberOfProceeded = this.MaxResults;
                }

                // Combine regular search sort with filter sort
                string srt       = ValidationHelper.GetString(SearchSort, String.Empty).Trim();
                string filterSrt = ValidationHelper.GetString(FilterSearchSort, String.Empty).Trim();

                if (!String.IsNullOrEmpty(filterSrt))
                {
                    if (!String.IsNullOrEmpty(srt))
                    {
                        srt += ", ";
                    }

                    srt += filterSrt;
                }

                // Search
                DataSet results = SearchHelper.Search(searchText, SearchHelper.GetSort(srt), path, DocumentTypes, culture, defaultCulture, CombineWithDefaultCulture, CheckPermissions, SearchInAttachments, Indexes, displayResults, startPosition, numberOfProceeded, (UserInfo)CMSContext.CurrentUser, out numberOfResults, AttachmentsWhere, AttachmentsOrderBy);

                if ((this.MaxResults > 0) && (numberOfResults > MaxResults))
                {
                    numberOfResults = MaxResults;
                }

                // Fill repeater with results
                repSearchResults.DataSource = results;
                repSearchResults.PagerForceNumberOfResults = numberOfResults;
                repSearchResults.DataBind();

                // Show now results found ?
                if (numberOfResults == 0)
                {
                    lblNoResults.Text    = NoResultsText;
                    lblNoResults.Visible = true;
                }
            }
            else
            {
                Visible = false;
            }

            // Invoke search completed event
            if (OnSearchCompleted != null)
            {
                OnSearchCompleted(Visible);
            }
        }
    }