使用asp.net和sql server显示多级嵌套产品类别?
我有一个包含以下字段的产品类别表:
cat_id (PK)
Cat_name
Cat_desc
Parent_Cat_Id
现在,当用户想要添加产品时,他应该能够从列表框中选择多个类别(启用多重选择)。但是为了让用户知道类别的层次结构,我需要以以下样式显示它们:
父类别 1
父类别 1->子类别 1
父类别 1->子类别 1->子子类别1
父类别1->子类别1->子子类别2
父类别1->子类别2
父类别2
...
我知道要实现这一点我需要使用递归编程。但是我们如何通过存储过程来做到这一点呢?那会更有效率,对吗?
预先感谢您的帮助。
I have a product category table with the following fields:
cat_id (PK)
Cat_name
Cat_desc
Parent_Cat_Id
Now when a user wants to add a product he should be able to select multiple categories from a listbox(multiselection enabaled). But to let the user know the hierarchy of the categories, I need to display them in the following style:
parent category 1
parent category 1->sub category 1
parent category 1->sub category 1->sub-sub category 1
parent category 1->sub category 1->sub-sub category 2
parent category 1->sub category 2
Parent category 2
...
I know that to achieve this I need to use recursive programming. But how can we do it via stored procedures? That would be much more efficient, right?
Thanks in advance for your kind help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这就是你想要的。此存储过程使用“CTE”或“公用表表达式”。我不是这方面的专家,但它们非常有用。绝对建议查找它们。
实际上,如果您将最后一个选择更改为“从树中选择*”,您将获得有关层次结构的更多数据。
以下是 CTE
Here's what you want. This stored procedure uses a "CTE" or "common table expression". I'm not a pro at them but they're very usefull. Definatly recommend looking them up.
Actually, if you change that last select to "selct * from tree" you'll get more data about the hierarchy.
Here's a link to a good resource for CTE's
你在使用 Linq 吗?
如果您使用 LINQ,我建议添加一个新属性,该属性仅表示具有所有父类别的类别,并在那里使用递归,这样您就可以轻松地在 ASP.NET 中访问它
Are you using Linq?
If you use LINQ i´d suggest adding a new property which just represents the category with all parentcategorys and use the recursion there, so it´s easy for you to access it in asp.net