簡體   English   中英

Sharepoint中的自定義Navigationprovider-如何從列表中生成導航項?

[英]Custom navigationprovider in sharepoint - how to generate the navigation items from a list?

感謝您閱讀我的問題。

以下情況:
-基於自定義內容類型的共享點列表。 內容類型只不過是具有一些額外屬性(例如url,targetpage)的文件夾。 -文件夾內容類型和項目表示菜單結構。 例如:

主頁| www.home.com | home.aspx
--->子房| www.subhome.com | subhome.aspx
印象 www.impressum.com | impressum.aspx

這種結構沒有限制,它的深度或可以包含多少個項目/文件夾。 唯一的限制是文件夾內的每個名稱都必須唯一。

由於性能,我需要一次獲取列表中的所有項目,而不是每個文件夾。 我這樣管理:

            SPQuery qry = new SPQuery();
            qry.ViewAttributes = "Scope='RecursiveAll'";

之后,我將SPListItems轉換為一個名為NavigationEntry的對象。 該對象包含一個SiteMapNode和其他一些屬性,例如路徑,項目名稱和級別計數(例如Home / Subhome = level2,Impressum = level1)。

現在,我將所有這些項目放在以path + itemname作為鍵的字典中(因為它是唯一的,並給我提示該項目位於何處)。 之后,我使用linq訪問此詞典並逐級抓取項目級別,直到到達結尾為止(一個級別上沒有可用項目)。 現在是棘手的部分。 我必須將這個怪異的結構“轉換”為導航點。 因為我是新來的sharepoint,所以有時會有些混亂。

此刻,我進入各個層次並使用SiteMapNodeCollections創建SiteMapNodes,進入下一個層次,查看是否已有子項,然后將子級放入其中,依此類推。 可以,但是非常復雜,骯臟和脆弱。

是否有任何“簡便”或更結構化的方式來解決此問題? 我不是在尋找已經編碼的解決方案,而是在尋求有關如何解決此問題的正確方向的任何提示。 謝謝! :)

如果只是導航樹是您想要的,我可以推薦JSTree

我曾經將其用於多級Quichnav代表。 在創建用於添加項目的管理界面的同時,您可以在列表的更改事件中構建XML或Json。 或者更有趣的是,每次擴展節點時都進行查詢。

希望這可以幫助

拉爾斯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM