【发布时间】:2010-02-27 22:12:48
【问题描述】:
我正在使用 VB.NET 3.5 开发 CMS,但我坚持一个概念。我有不同的模块来做不同的事情,比如所见即所得、联系表格、图片库等......但是一个正在成为一个挑战的模块是让我的头脑围绕“如何”构建站点地图。
为了记录,我不是在谈论 SEO 站点地图 (XML),而是类似于 Karamasoft 的访问者站点地图(查看宝马或戴尔风格,了解我的目标)。
我的数据库有以下列
ID ParentID MenuName Slug DateUpdated
1 Null Home ~/home 01/01/2010
2 Null About ~/about 01/01/2010
3 Null Contact ~/contact 01/01/2010
4 2 History ~/history 01/01/2010
5 2 Future ~/future 01/01/2010
6 3 Jobs ~/jobs 01/01/2010
我的代码设置方式是我将所有相关字段填充到服务器端的一个对象中,然后我可以多次访问,而不会一遍又一遍地访问数据库。
Public Shared ReadOnly Property Instance() As List(Of NavigationDataItem)
Get
Dim n As New List(Of NavigationDataItem)()
If _Instance Is Nothing Then
Dim PagesDC As New Dal.icms_PagesDataContext()
Dim results = PagesDC.icms_Pages_GetPageMenu().ToList
For Each o As Object In results
If o.isHomePage Then
n.Add(New NavigationDataItem(o.ID, o.ParentID, o.MenuName, "~/", o.DateUpdated))
Else
n.Add(New NavigationDataItem(o.ID, o.ParentID, o.MenuName, o.Slug, o.DateUpdated))
End If
Next
_Instance = n
Else : n = _Instance
End If
Return n
End Get
End Property 'Instance
我想要做的是将所有没有 ParentID 的记录(即:它们是顶级项目)列在顶部,所有的子项都列在下面。
<table>
<tr>
<th>Home</th>
<th>About</th>
<th>Contact</th>
</tr>
<tr>
<td> </td>
<td>History</td>
<td>Jobs</td>
</tr>
<tr>
<td> </td>
<td>Future</td>
<td> </td>
</tr>
</table>
我希望能够动态设置表格列数,这样如果我有 10 个父项并且仅将宽度设置为 5 列,则剩余的父项将列在下面的另一个表格行中。
我确信我可以自己构建代码,一旦我解决这个问题,我只是在寻找一个关于如何解决这个问题的“概念”。
另外,我不是在寻找 Treeview,因为这基本上就是我现在正在做的事情,而且我真的一点也不喜欢它。
【问题讨论】:
标签: asp.net vb.net content-management-system sitemap