在剛接觸SharePoint的WebPart開發時,如果實現過程中需要指定一個網站或列表時,常見的實現方式
是建立對應的屬性用以儲存網站或列表的設定。
但是,這種實現方式不人性化,而且容易出錯。試想一下:在一個大點的網站中,誰會記得某個列表的名稱呢?
如果,我們能夠給出一個網站的下拉式清單或可用列表的下拉式清單以供選擇,這樣不是很好?
----
在我的開發過程中,我使用EditorPart來達到這種實現效果《使用一般ASP.NET 控制項開發中的ControlDesigner應該也可以
實現,但我沒有實驗過》,EditorPart的原理及實現方式大家可以在園子裡搜搜。
----
實現了動態選擇後,在需要使用該效果的webpart中,只需要重寫其CreateEditorParts方法,並在其中加入實現該效果的EditorPart即可,比如:
Code
1//大體樣本如下:
2//因為在家裡私人電腦上《無相關環境》寫例子,完全憑想像
3//因此,不敢保證某些變數、方法名、參數名正確。
4//但方式完全正確。
5public override EditorParts CreateEditorParts()
6{
7 List<EditorPart> newParts=new List<EditorPart>();
8 WebAndSingleListSelectEditorPart part1=new WebAndSingleListSelectEditorPart(this);
9 part1.InitListTemplateTypes(SPListTemplateType.Links,SPListTemplateType.DocumentLibrary); //初始化需要選擇的清單類型
10 //還可以指定WebPart中存放WebID和被選擇的列表名的屬性
11 //使用方式在代碼中有相關注釋
12 part1.ID="****";
13 part1.Title="單網站單列表選擇地區";
14 newParts.Add(part1);
15 ----可以加入多個其它的EditorParts
16 EditorParts existParts=base.CreateEditorParts();
17 return new EditorParts(existParts,newParts);
18}
19
這樣就可以動態選擇網站和列表。
在我提供的包裡,提供了兩種效果
1、單網站、單列表選擇:也就是通過該EditorPart可以選擇一個網站,以及該網站下的某個列表,並存放網站ID和列表名到對應的WebPart的對應屬性中。(可以在聲明EditorParts時通過建構函式或執行個體屬性指定對應的屬性名稱)。
EditorPart名為:WebAndSingleListSelectEditorPart
2、單網站選擇:也就是通過該EditorPart可以選擇一個網站,並存放網站ID到對應WebPart的對應屬性中。
EditorPart名為:SingleWebSelectEditorPart
兩個效果都使用到了一個反射工具類(ReflectionUtility),一同提供在了包中。
單網站、多列表選擇的效果就不提供了
^_^因為該效果我也沒寫,而且使用情境比較少。
-----
歡迎大家下載試用,並給出相應的改進及指正。
McJeremy&Xu原創,歡迎轉載,但請保留http://www.cnblogs.com/McJeremy地址說明。
源碼下載:/Files/McJeremy/EditorParts.rar