2015-12-21 2 views
-2

У меня есть таблица под названием «Tabel_Items» в базе данных с этими полями: id, parent и child:Как сделать динамически Дерево в ASP.NET MVC

enter image description here

Я хочу, чтобы генерировать HTML-теги, как эти:

<ul> 
    <li>parent1 
     <ul> 
      <li>child1</li> 
      <li>child2 
       <ul> 
        <li>child21</li> 
        <li>child22</li> 
       </ul> 
      </li> 
     </ul> 
    </li> 
    <li>parent2 
     <ul> 
      <li>child3</li> 
     </ul> 
    </li> 
</ul> 

я могу получить элементы с помощью запроса LINQ и передать их мнению:

public ActionResult Index() 
{ 

    DataClasses1DataContext db = new DataClasses1DataContext(); 
    var items = from i in db.Table_Items 
       select i; 

    return View(items); 
} 

Как я могу прокрутить «элементы» в поле зрения и сделать из них список деревьев?


Я хочу, чтобы выражение лямбда выбирало те строки, которые сначала имеют «parentId == null». Я проверить код, как это, но есть ошибка:

@foreach (var i in Model) 
{ 
     @Html.DisplayFor(x => i.ItemName.Where(i.ParentId==null)); 
} 
+0

Что вы пробовали до сих пор? Часть проблемы - это ваш дизайн данных. Ваша таблица должна иметь следующие поля: Id, ItemName, ParentId. И вы должны создать отношения «один ко многим», используя Id в качестве первичного ключа и ParentId как внешний ключ. – ataravati

ответ

0

Я решил мой problem.thank для меня:

<ul> 
@foreach (var x in Model.Where(f => f.ParentId == null)) 
{ 
    <li> 
     @Html.DisplayFor(f => x.ItemName) 
     <ul> 
      @foreach (var y in Model.Where(c => c.ParentId == x.Id)) 
      { 
       <li> 
        @Html.DisplayFor(c => y.ItemName) 
        <ul> 
         @foreach (var z in Model.Where(c => c.ParentId == y.Id)) 
         { 
          <li>@Html.DisplayFor(c => z.ItemName)</li> 
         } 
        </ul> 
       </li> 
      } 
     </ul> 
    </li> 
} 
</ul> 
Смежные вопросы