View Single Post
  #1 (permalink)  
Old December 22nd, 2006, 02:55 PM
hpox hpox is offline
Authorized User
 
Join Date: Dec 2006
Location: Montreal, Quebec, Canada.
Posts: 19
Thanks: 0
Thanked 0 Times in 0 Posts
Default Search Function and User Controls

Hi, I posted the same question in the ASP.NET 2.0 Professional forum but thought that this forum might be more appropriate since we're following this book.

I implemented a search functionality to a website. That website was developed using a 3-layers architecture as described in Bellinaso's Problem - Design - Solution.

I use a custom control ProductListings.ascx to show the results. Basically, the Recherche class take a string and return a List<Product>. Then the GridView use that List<Product> to show all the results found by the search.

Code:
<asp:ObjectDataSource 
    ID="objRecherche"
    runat="server"
    SelectMethod="SmartSearch" 
    TypeName="SiteWeb.BLL.Services.Recherche">
    ...

<asp:GridView 
    ID="GridView1" runat="server"
    DataSourceID="objRecherche"
    ...
What we want to add is a way to add more information than only the results via a GridView. For example, we want to print the keywords that were used to search for these products, the time taken to process the search, a special message when there is no product.

The Recherche class does more than just pass the search string to the DAL. It will take a string such as "le ski de fond", cut it into 4 words and remove "le" and "de" because they're article. So it will pass ["ski", "fond"]. I want to print that on the result page so the user knows "le" and "de" were not taken into account.

My idea was to add properties (keywords, timeTaken) inside the Recherche object that can be set during the algorithms. Then inside the control, get those properties and print whatever I want before the GridView using either another control or just a Literal.

So, my question is "how do I do this?" and if it's not possible, "what should be done instead?" I tried to do this in the control but it didn't work:

Code:
<asp:Literal runat="server" Text='<%# Test() %>' />

protected string Test()
{
  return ((Recherche)objRecherche).MyProperty;
}
Thanks