2010-06-09 8 views
0

J'essaie de trouver la meilleure pratique pour configurer les données de hiérarchie que je prends d'une base de données dans un contrôleur qui montrerait la hiérarchie. Fondamentalement, cela ressemblerait à un arbre normal, mais lorsque vous appuyez sur les éléments qui sont sous "chapitres", vous obtenez un lien vers une autre page.La meilleure pratique pour configurer les données de la hiérarchie

J'ai ces tables, ce qui est la façon dont ils sont connectés

Period 
Courses 
Subjects 
Chapters 

je choisis la période d'un DropDownBox puis je veux tous les cours de cette période à aligner. Sous chaque cours serait le sujet et sous eux sont les chapitres, la hiérarchie typique.

Les tables sont reliées les unes aux autres de façon linéaire.

J'ai essayé d'utiliser treeview pour le montrer, mais je ne comprends pas comment le faire. Je pense que je pourrais utiliser les tags <ul><il> et le faire au moment de l'exécution. Reapeter ou datalist, possible?

Vaut-il mieux faire cela avec la liaison de données en XAML ou en code?

Répondre

1

Dans mon expérience, c'est le meilleur pour lui avec li et ul. Vous avez plus de contrôle sur la façon dont tout est affiché. J'ai eu la requête qui me donne tous les enregistrements et le parent et la profondeur. Ensuite, je boucle à travers ces données et généré les balises de la liste.

foreach (ligne 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

si je comprends ce droit, vous avez des documents sur la profondeur des articles que vous stockez dans la base de données? – eski

+0

ouais, peut-être que ça ne correspond pas vraiment à ce dont tu as besoin mais c'est un exemple pour avoir une idée :) – Ivo