Asp.net 设置层次结构数据的最佳实践

Asp.net 设置层次结构数据的最佳实践,asp.net,sql,hierarchical-data,Asp.net,Sql,Hierarchical Data,我正试图找出设置层次结构数据的最佳实践,这些数据是我从数据库中提取到某个显示层次结构的控制器中的。 基本上,这看起来像一个普通的树,但当你按下“章节”下的项目,你会得到一个链接到另一个页面 我有这些表,这是它们连接的方式 Period Courses Subjects Chapters 我从下拉框中选择Period,然后我希望该期间的所有课程都排成一行。 每门课程下都有主题,下面是章节,典型的层次结构 这些表通过引用以线性方式相互链接在一起 我试着用treeview来展示这一点,但不知道怎么做

我正试图找出设置层次结构数据的最佳实践,这些数据是我从数据库中提取到某个显示层次结构的控制器中的。 基本上,这看起来像一个普通的树,但当你按下“章节”下的项目,你会得到一个链接到另一个页面

我有这些表,这是它们连接的方式

Period
Courses
Subjects
Chapters
我从下拉框中选择Period,然后我希望该期间的所有课程都排成一行。 每门课程下都有主题,下面是章节,典型的层次结构

这些表通过引用以线性方式相互链接在一起

我试着用treeview来展示这一点,但不知道怎么做。 我想我可以使用
标记并在运行时执行。 可能是雷彼得还是数据表


使用XAML还是代码进行数据绑定更好?

根据我的经验,最好使用li和ul进行数据绑定。您可以更好地控制所有内容的显示方式。我得到了一个查询,它提供了所有记录、父项和深度。然后我循环遍历这些数据并生成列表标记

foreach(navigationTable.Rows中的DataRow行) {

            var currentDepth = int.Parse(row["depth"].ToString());

            if (lastDepth < currentDepth)
            {
                output.Append("<ul>");
                numUl++;
            }
            else if (lastDepth > currentDepth)
            {
                while (lastDepth > currentDepth)
                {
                    output.Append("</li></ul></li>");
                    numUl--;
                    lastDepth--;
                }
            }
            else if (lastDepth > -1)
            {
                output.Append("</li>");
            }

            output.AppendFormat("<li id=\"base\" class=\"class\">{3}<a>link</a>

            lastDepth = currentDepth;
        }

        for (var i = 1; i <= numUl; i++)
        {
            output.Append("</li></ul>");
        }
var currentDepth=int.Parse(行[“depth”].ToString());
如果(lastDepth”);
numUl++;
}
否则如果(lastDepth>currentDepth)
{
while(lastDepth>currentDepth)
{
output.Append(“”);
努穆尔--;
最后深度--;
}
}
否则如果(lastDepth>-1)
{
输出。追加(“”);
}
AppendFormat(“
  • {3}链接 lastDepth=当前深度; }
    对于(var i=1;如果我理解正确,您有关于存储在数据库中的项目深度的记录?是的,可能它不完全符合您的需要,但这是一个获得想法的示例:)