2010-06-09 83 views
0

我想弄清楚设置从数据库进入某些控制器并显示层次结构的层次结构数据的最佳实践。 基本上,这看起来像一个正常的树,但是当你按下“章节”下的项目时,你会得到另一个页面的链接。设置层次结构数据的最佳做法

我有这些表,这是它们连接

Period 
Courses 
Subjects 
Chapters 

我从DropDownBox选择的时间,然后我想在那个时期所有的课程排队的方式。 在每门课程下都是主题,在它们下面是chapers,典型的层次结构。

这些表格以线性方式相互链接在一起。

我试图使用treeview来显示这一点,但不知道如何去做。 虽然我可以使用<ul><il>标签,并在运行时执行此操作。 Reapeter或datalist,可能吗?

使用XAML或代码中的数据绑定执行此操作会更好吗?

回答

1

根据我的经验,最好用李和ul。您可以更好地控制所有内容的显示方式。我得到的查询给了我所有的记录,父母和深度。然后我遍历这些数据并生成列表标签。

的foreach(DataRow的行navigationTable.Rows) {

  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>"); 
     } 
+0

如果我没有理解这个权利,你对你存储在数据库中的项目的深度记录? – eski 2010-06-09 11:28:25

+0

是的,也许它不完全符合你的需求,但它是一个想法的例子:) – Ivo 2010-06-09 12:18:03