ASP.Net Dynamic BreadCrumb

I created a asp.net page that return subcategories based on the  category id.  I need to create a path on top of the page to look something like this: home >> cat3 >> SubCat4 >> SubSubCat2 >> product.  

'cat3' needs to be a link with the Cat_ID ... <a href="mypage.aspx?CatID=3">cat3</a>  
'SubCat4' needs to be a link with the Cat_ID ... <a href="mypage.aspx?CatID=7">SubCat4</a>  
etc...

This is dynamic so there is no set number to the category hierarchy.

Here's my table structure with some example data

      Tbl_Category
Cat_ID     Name     Parent_ID
  1           Cat1           0
  2           Cat2           0
  3           Cat3           0
  4        SubCat1         2
  5        SubCat2         2
  6        SubCat3         2
  7        SubCat4         3
  8       SubSubCat1     7
  9       SubSubCat2     7

Cat1, Cat2, & Cat3 are the parents with the ID=0
SubCat 1,2 & 3 belong to Cat2
SubCat 4 belongs to Cat3
SubSubCat1 & 2 belong to SubCat4

I've read through several articles dealing with breadcrumbs but the problem that I run into is my App does searches and jumps in several layers into the hierarchy.  I need to show a path so the user can get back to that location in the future without doing searches.  This path needs to be displayed in the datagrid along with the search results.  The result set looks something similiar to Google or Yahoo.

example ...
the user does a search and gets to product in SubSubCat1 and SubCat2.  I need the app to show this in the datagrid:  

Search results

Product (blah blah)
home >> cat3 >> SubCat4 >> SubSubCat1 >> product

Product (blah blah)
home >> cat2 >> SubCat2 >> product


Also I need to keep track of the categories as the user goes through the layers.
 
Are there any examples of something like a Stored Procedure that shows how to do this?

Thanks
nmachinAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

nmachinAuthor Commented:
Possibly a User-Defined Function???
0
nmachinAuthor Commented:
I came across a UDF and was able to modify it to build a string with links to all the sub categories through a loop.  

This is the results I get when I run the UDF...
<a href="mypage.aspx?CatID=3">Cat3</a> >> <a href="mypage.aspx?CatID=7">SubCat4</a> >> <a href="mypage.aspx?CatID=9">SubSubCat2</a>


CREATE FUNCTION dbo.GetParentCatPath(@ParentId int)
RETURNS VARCHAR(2000) AS
BEGIN
     DECLARE @blnExit      AS BIT,
          @vchResult      AS VARCHAR(2000),
          @CatId          AS INT,
          @CatName     AS VARCHAR(100),
         @tmpCatName as varchar(100)

     SET      @blnExit=0
     SET      @vchResult=''

     WHILE @blnExit=0
     BEGIN

          SELECT      @ParentId=Tbl_Category.Parent_ID,
               @CatId=Tbl_Category.cat_ID,
               @CatName=Tbl_Category.Category
          FROM      Tbl_Category
          WHERE      Tbl_Category.cat_ID=@ParentId

      IF @CatName IS NULL  
           SET     @blnExit=1
      ELSE
           BEGIN
             SET @tmpCatName = '<a href="mypage.aspx?CatID=' + Convert(varchar(6),@CatID) + '">' + RTRIM(LTRIM(@CatName)) + '</a>'
      
             IF @vchResult<>''
                  SET      @vchResult= @tmpCatName + ' '+ '>>' + ' ' + @vchResult
             ELSE
                  SET      @vchResult= @tmpCatName
      
             IF @ParentId=0
                  SET     @blnExit=1
           END
     END

     RETURN @vchResult
END




How can something like this be implemented into a dataset which will be displayed on in a DataGrid.
0
raterusCommented:
The function I wrote would essentially populate the entire tree into a treeview control, it wasn't running from a deep-nested node to the parent.
Given a nested node, you can get the path to the root like so,

Declare @tmpID int
Set @tmpID = 54

Declare @tmp table(
     tmpID int
)

While @tmpID <> 0
Begin
     Insert Into @tmp (tmpID) values (@tmpID)
     select @tmpID = parent from template where tmpID=@tmpID
End

select * from @tmp
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
ASP.NET

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.