C# 显示数据库中的分层数据?
我正在处理一个项目的前端,任务是显示数据库中按层次结构组织的一些数据。我还没有处理过这类数据类型,我的第一个选择是gridview,它只显示“父级”,下面没有任何数据。我在谷歌上搜索了几个选项,但大多数选项看起来像是使用ADO.NET或Linq来查询数据库,而我需要一个用实体框架实现的后端选项。我的后端开发人员已设置此方法以返回资产数据:C# 显示数据库中的分层数据?,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我正在处理一个项目的前端,任务是显示数据库中按层次结构组织的一些数据。我还没有处理过这类数据类型,我的第一个选择是gridview,它只显示“父级”,下面没有任何数据。我在谷歌上搜索了几个选项,但大多数选项看起来像是使用ADO.NET或Linq来查询数据库,而我需要一个用实体框架实现的后端选项。我的后端开发人员已设置此方法以返回资产数据: public List<AssetEntity> GetAllAssets() { List<AssetEntity> get
public List<AssetEntity> GetAllAssets()
{
List<AssetEntity> getAllAssets = dal.SelectAsset(1);
Error = dal.Error;
return getAllAssets;
}
public List GetAllAssets()
{
List getAllAssets=dal.SelectAsset(1);
误差=dal.误差;
返回所有资产;
}
treeview听起来是我最好的选择,但我不确定使用EF控制什么或如何实现这一点。有什么线索吗?谢谢 在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>
和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();
}
}
});
});
全样本:
可以在razor中为每个Assetenty列表使用局部视图或显示模板来呈现列表。通过在每个Assetenty中使用相同的PartialView迭代子集合,您将得到递归,使其成为树
剃刀:
@model IEnumerable<AssetEntity>
<ul>
@foreach (var item in Model)
{
<li>@item.Name
@Html.DisplayFor(m => item.Children)
</li>
}
</ul>
@model IEnumerable
@foreach(模型中的var项目)
{
- @项目名称
@DisplayFor(m=>item.Children)
}
我已经添加了一些css和jQuery来完成这个示例。有没有不使用razor的方法?恐怕我还没有赶上这个速度。我一直在使用standalone.aspx页面来显示。不过,我还是要试一试。只要我们还在谈论mvc而不是webforms,PartialView或DisplayTemplates的想法就不会改变。无论如何,我鼓励您尝试一下razor viewengine。这就像“放一个@符号,然后做一些c#…”。我从以下引用开始:Edit:我使用webforms后端开发人员使用EF。我只是用basic C#和webform controlsOk浏览表单,我被你问题上的mvc标签误导了;-)。但我很确定在webforms中也有类似的解决方案。
@model IEnumerable<AssetEntity>
<ul>
@foreach (var item in Model)
{
<li>@item.Name
@Html.DisplayFor(m => item.Children)
</li>
}
</ul>