Я работаю над CMS с использованием VB.NET 3.5 и застрял в концепции. У меня есть разные модули, которые делают разные вещи, такие как wysiwyg, контактную форму, галерею изображений и т. Д., Но одним из которых становится немного сложнее, когда я думаю о том, как создать карту сайта.
Для справки, я говорю не о SEO Sitemap (XML), а о карте сайта посетителя, похожей на Karamasoft (Проверьте BMW или стиль Dell, чтобы узнать, что я стрельба для).
В моей базе данных есть следующие столбцы
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
Я пытаюсь сделать так, чтобы все записи без NO 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, так как это в основном то, что я делаю сейчас, и я действительно не люблю его вообще.