我相信我已经解决了这一切,所以我会回答我自己的问题。看看下面的代码。如果有其他关于优化的修改,请告诉我。
输出
站点.master.cs
public string AddTopMenuItems(DataTable dt)
{
string dHTML = "";
DataView DataView = new DataView(dt);
DataView.RowFilter = "Root_Navigation_ID = 0";
foreach (DataRowView GetParentRow in DataView)
{
dHTML += "<li><a class='ah-anchor-tooltip-show' href='javascript:void(0)'><i class='fa " + GetParentRow["CSS_Class"].ToString() + " fa-lg' aria-hidden='true'></i></a>";
dHTML += "<ul class='sub-menu'><li><a href='javascript:void(0)'><strong>" + GetParentRow["Name"] + "</strong></a>";
NavigationItem item = new NavigationItem(GetParentRow["ID"].ToString(), GetParentRow["Root_Navigation_ID"].ToString(), GetParentRow["Name"].ToString());
dHTML += AddChildMenuItems(dt, item);
dHTML += "</li></ul></li>";
}
return dHTML;
}
private string AddChildMenuItems(DataTable dt, NavigationItem parentMenu)
{
EnumerableRowCollection<DataRow> GetChildrens = from getChilds in dtNavigation.Tables[0].AsEnumerable()
where getChilds.Field<Int64>("Root_Navigation_ID") == Convert.ToInt64(parentMenu.ID.ToString())
select getChilds;
DataView childs = GetChildrens.AsDataView();
string retval = "";
foreach (DataRowView child in childs)
{
NavigationItem subMenu = new NavigationItem(child["ID"].ToString(), child["Root_Navigation_ID"].ToString(), child["Name"].ToString());
retval += "<ul><li><a href='javascript:void(0)'><strong>" + child["Name"].ToString().ToString() + "</strong></a>";
retval += this.AddChildMenuItems(dt, subMenu);
retval += "</li></ul>";
}
return retval;
}
<% if (dtNavigation.Tables.Count > 0)
{
%>
<ul id="menu">
<%= AddTopMenuItems(dtNavigation.Tables[0]) %>
</ul>
<%
}
%>