Kódování koncept potřeba vybudovat Mapa stránek

hlasů
2

Pracuji na CMS pomocí VB.NET 3.5 a jsem uvízl na konceptu. Mám různé moduly, které dělají různé věci, jako je WYSIWYG, kontaktního formuláře, galerie, atd ..., ale ten, který se stává trochu problém je obal hlavu kolem „jak“ postavit sitemap.

Pro záznam, Nemluvím o SEO Sitemap (XML), ale návštěvník sitemap podobné Karamasoft (Podívejte se na BMW nebo styl Dell pro představu o tom, co jsem natáčení).

Můj Databáze obsahuje následující sloupce

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

Mám nastavení kódu v takovým způsobem, že jsem naplnit všechna příslušná pole do objektu na straně serveru, který jsem pak mohou přistupovat několikrát, aniž by zasáhla DB znovu a znovu.

    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

Co se snažím udělat, je mít všechny záznamy, které nemají žádnou ParentID (IE: jsou nejvyšší položky na úrovni) musí být uvedeny v horní části, a to vše je děti uvedena pod ním.

<table>
  <tr>
    <th>Home</th>
    <th>About</th>
    <th>Contact</th>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>History</td>
    <td>Jobs</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>Future</td>
    <td>&nbsp;</td>
  </tr>
</table>

Chci, aby bylo možné dynamicky nastavit počet sloupců tabulky, takže když mám 10 Parent položky a jen nastavit svou šířku 5 sloupců, zbývající mateřské položky budou uvedeny v jiném řádku tabulky níže.

Jsem si jistý, můžete vytvořit kód sám, když jsem zabalit hlavu kolem toho, já jsem jen hledal „koncepce“ o tom, jak přistupovat k tomuto problému.

Také nejsem hledal Treeview, protože to je v podstatě to, co dělám teď, a já opravdu nemám rád, vůbec.

Položena 27/02/2010 v 23:12
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
1

Dalo by se použít DataList nastavit počet sloupců a svázat, že pouze položky na nejvyšší úrovni. Pak použijte jednoduchou funkci získat childitems pro každou hlavní položku a vykreslení těch s opakovač:

<asp:DataList RepeatColumns="5" DataSource="<%#GetParentMenuItems()%>" runat="server">
  <ItemTemplate>
    <h1><%#Container.DataItem.MenuName%></h1>
    <hr />
    <asp:Repeater DataSource="<%#GetChildMenuItems(Container.DataItem.ID)%>" runat="server">
      <ItemTemplate>
        <a href="<%#Container.DataItem.Slug%>"><%#Container.DataItem.MenuName%></a>
        <br />
      </ItemTemplate>
    </asp:Repeater>
  </ItemTemplate>
</asp:DataList>

V ideálním případě, že dítě položky bude kolekce visí rodiče, pak byste mohli svázat vnořené opakovač pro které přímo. Dalo by se pak vytvoří uživatelský ovládací prvek, který činí položky, a pak hnízdo sama o sobě k tomu, aby případné dílčí položky.

Na okrajová poznámka: Myslím, že budete dělat sami, laskavost držet se .NET Sitemap, nikoli vaří své vlastní. Spousta praktických kontrol ji využívají, a to pěkně integrovat se zbytkem rámce ASP.NET. :)

Odpovězeno 28/02/2010 v 05:58
zdroj uživatelem

hlasů
0

Použijte ASP: kontrolním stolkem a přidat buňky jeden po druhém, když se dostanete požadovanou šířku (5) začít nový řádek

Odpovězeno 28/02/2010 v 00:39
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more