SharePoint要在master page中动态显示List数据的几种方式
我們都知道,在SharePoint中,Content page繼承自Page layout,而Page layout又繼承自Master page。Master page的作用大家都知道,它定義了站點的的整體外觀和公共元素,因此有了很強的頁面重用性和很好的頁面編輯體驗,Page layout通過ContentPlaceHolder為一些內(nèi)容相似性很強的頁面進行了布局,所以到了Content page那里,我們所做的只是放我們每個頁面想要顯示的內(nèi)容即可,剩下的布局和樣式都可以不用操心了。
?
好了,前面算是開場白吧!現(xiàn)在我們正式說重點,先從需求說起,客戶要求整個站點的Footer部分要求從站點的List里面動態(tài)讀取數(shù)據(jù)來生成它,而不是寫死在master page里面,例如下面的圖示,也就是說客戶希望將來他們可以通過維護一個List數(shù)據(jù)來動態(tài)更新站點的Footer部分,附加排序,是否顯示等功能,都有List里面的某個字段來控制,而不再需要有IT人員去更新了。
?
?
對于這個需求,我們可以有如下幾種實現(xiàn)方式:
?
(一)? 首先想到的是寫一個Customized User Control,通過調(diào)用Object Model來呈現(xiàn)數(shù)據(jù)。部署完了dll以后,需要在Master Page里注冊引用,然后才能去使用它,這里不再多說具體過程。這種方法好是好,但是不易維護,如果有任何邏輯改動,還需要重新部署dll到服務器端,很多時候不是很方便。
?
(二)??第二種方式是借助于Content Query Web Part,有人會說Master Page里面可以放Web part嗎?動態(tài)的web part是不能加到Master page里的,因為Master page的內(nèi)容是不允許從頁面上修改的,但是我們可以放靜態(tài)的web part,所謂靜態(tài)的就是說web part不在web part zone里面。具體步驟如下:
1.? 先建一個臨時的測試頁面,添加一個Content Query Web Part, 然后配置web part,如數(shù)據(jù)源,過濾條件及排序等屬性。
2.? 用SPD將次頁面跟layout分離,然后打開它,找到相應的web part zone,我們發(fā)現(xiàn)zone里面是一個<PublishingWebControls:ContentByQueryWebPart>,其實它就是一個控件,將此控件拷貝出來放到Master page相應的html元素中即可,注意不要web part zone。
3.? 更新List數(shù)據(jù)并刷新頁面可以看到Footer是動態(tài)變化的了。注意:有時候換了環(huán)境可能會出現(xiàn)這個錯誤:There is a problem with the query that this Web Part is issuing. Check the configuration of this Web Part and try again. 這是因為ListGUID變了,所以必要的時候我們可以通過ListUrl和ListName屬性來控制,而不再使用ListGUID。
?
(三)??第三種方式也是借助web part,只不過換成是Data View Web Part,所以跟第二種方式大體上應該差不多,就不再細說了。
?
以上幾種方式,各有優(yōu)缺點,相對來講,第二種或第三種更容易維護,因為他們是OOB的,不涉及到服務器端代碼,如果客戶不讓寫服務器端代碼,那么此時選擇后者再合適不過了。也許還有其他更好的方式,有待探究。
轉(zhuǎn)載于:https://www.cnblogs.com/crazysharepoint/archive/2010/11/30/masterpage-list.html
總結(jié)
以上是生活随笔為你收集整理的SharePoint要在master page中动态显示List数据的几种方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编译器错误 CS1026
- 下一篇: 在谷歌云盘训练YOLOV5模型