Hej!
Använder en pagesearchcontrol som jag styr via codebehindfilen. Om jag "fyller" den enligt följande, där minaSidor är en pagedatacollection, så ser det helt ok ut, OM jag inte fyller i någon söksträng i textboxen, för då kommer sidan/sidorna som innehåller det ordet en gång till... Varför blir det så?
SearchResults.DataSource = minaSidor;
SearchResults.SearchFiles = false;
SearchResults.OnlyWholeWords = OnlyWholeWords.Checked;
SearchResults.SearchQuery = SearchQuery.Text;
SearchResults.SortBy = "PageStartPublish";
SearchResults.DataBind();
Jag har efter diverse urval en pagedatacollection, som jag vill koppla till pagesearchkontrollen, för att ur den kunna söka med en söksträng. Problemet är att i mitt resultat, så visar den först sidorna i pagedatacollection, och sedan visar den sidan som stämmer in med sökkriteriet, den visas alltså två ggr. Till två av urvalen (datum) använder jag PropertyCriteria, men det sista (pagetypid) blir inte det bra eftersom det kan vara flera pagetypid´s. Innan jag la till pagetypidkriteriet funkade följande bra:
foreach (PropertyCriteria pc in criteriaCollection)
{
SearchResults.Criterias.Add(pc);
}
men nu blir det en pagedatacollection i stället som jag vill koppla.
Varför det blir dubbelt beror på att följande:
Först kopplar du minaSidor till DataSource. Sedan sker en sökning, och den sker alltid från PageLink (som får ett defaultvärde om den inte är satt). Alla sökträffar läggs sedan till DataSource, vilket gör att resultat kommer bli minaSidor + sökträffar.
Just filtrering på pagetypeid kan du göra genom att lägga till en FilterEventHandler... i stil med
PageSearch EPiPageSearch = new PageSearch();
EPiPageSearch.Filter += new FilterEventHandler(EPiPageSearch_Filter);