2014-03-26 107 views
2

我正在開發一個項目的前端,負責顯示一些數據庫中組織爲分層的數據。我還沒有使用這些類型的數據類型,我的第一個目標是gridview,它只顯示「父」,沒有顯示任何數據。我搜索了幾個選項,但大多數看起來像他們使用ADO.NET或Linq來查詢數據庫,而我需要一個與實體框架實現的後端選項。我的後端開發建立了此方法返回的資產數據:從數據庫顯示分層數據?

public List<AssetEntity> GetAllAssets() 
{ 
    List<AssetEntity> getAllAssets = dal.SelectAsset(1); 
    Error = dal.Error; 
    return getAllAssets; 
} 

上的樹形視圖聽起來像我最好的選擇,但我不知道用EF來實現這個控制什麼或如何。任何線索?謝謝!

回答

2

顯示HTML中的樹可以通過嵌套無序列表來完成:

<ul class="tree"> 
    <li><div>Item 1</div></li> 
    <li><div>Item 2</div></li> 
    <li><div>Item 3</div> 
     <ul> 
      <li><div>Item 3.1</div></li> 
      <li><div>Item 3.2</div> 
       <ul> 
        <li><div>Item 3.2.1</div></li> 
        <li><div>Item 3.2.2</div></li> 
       </ul> 
      </li> 
     </ul> 
    </li> 
</ul> 

一些CSS,使其看起來更加樹狀:

ul 
{ 
    list-style:none; 
    /*list-style-image: url('your_image_url_here')*/ 
} 

和jQuery展開/摺疊兒童安全

$(function(){ 
    $(".tree li div").click(function() 
     { 
      var children = $(this).parent("li").children("ul"); 
      if(children.length > 0) 
      { 
       if(children.is(":visible")) 
       { 
        children.hide(); 
       } 
       else 
       { 
        children.show(); 
       } 
      } 
     }); 
}); 

全樣本:在點擊節點http://jsfiddle.net/eQxTs/5/

對於AssetEntity的每個列表,您可以使用部分視圖或DislayTemplates在剃刀中呈現列表。通過迭代每個AssetEntity中具有相同PartialView的子集合,您將獲得遞歸使其成爲一棵樹。

剃刀:

@model IEnumerable<AssetEntity> 

<ul> 
@foreach (var item in Model) 
{ 
     <li>@item.Name 
      @Html.DisplayFor(m => item.Children) 
     </li> 
} 
</ul> 
+0

我已經添加了一些CSS和jQuery來完成採樣。 – Hannes

+0

有沒有辦法做到這一點,不使用剃鬚刀?恐怕我還沒有做好準備。我一直在使用獨立的.aspx頁面來顯示。儘管如此,我會給它一個旋轉。 – gibbypoo

+0

只要我們仍在討論mvc而不是webforms,PartialViews或DisplayTemplates的概念仍然相同。無論如何,我會鼓勵你給剃鬚刀viewengine一試。這就像「只是把@sign和做一些C#...」。我從這篇參考文章開始:http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx/ – Hannes