在正式開始之前,我們需要對SharePoint Object Model有所了解,這個可以去看SPS的SDK,裡面說的很詳細,只是這個SDK沒有出中文版,只有英文版,像我這類英文水平比較低下的只能靠著翻譯軟件痛苦的琢磨.
上個星期一些專案成員提出來:在網站首頁上,需要一個圖片的跑馬燈功能,可以展示一些活動圖片什麼的. 考慮到這個需求在往後的專案中一定會再次被提出,所以就寫了個WebPart,這樣以後再需要時,只需要在拖跩到網頁上就可以了. 本篇就以這個簡單的功能為示例,說一說SPS WebPart的開發(C#)與部屬.
一、建立SPS WebPart工程
l 啟動VS.NET2005,新建工程中選擇SharePoint,然後選擇WebPart模版,這樣就建立了一個WbePart工程
l 工程中已有Windows SharePoint Service引用,正像上篇所說,若開發端已安裝SPS,則這個引用直接可以添加,若沒有安裝則需要從已安裝的機器上Copy一個到開發端來引用
二、在需要跑馬燈的SPS網站新建一個圖片庫,我這裡命名為:MarqueePhoto
目的是用來存儲跑馬燈裡面的圖片,借助圖片庫的功能讓站點管理員維護更新跑馬燈圖片.
三、獲取網站對象
首先要獲得當前的網站對象,然後才能獲取MarqueePhoto對象,通過MarqueePhoto對象最終獲得圖片,可以在Public class中加入:
SPWeb web = SPControl.GetContextWeb(System.Web.HttpContext.Current);
這句是獲得當前網站的對象,當然獲取方式還有其他方法,比如OpenWeb().
四、獲取圖片庫對象並取得圖片集合
在RenderWebPart加入如下代碼:
SPList list = web.Lists["MarqueePhoto"]; //獲取圖片庫對象
SPListItemCollection item = list.Items; //獲取圖片集合
五、輸出圖片庫裡所有圖片
foreach (SPListItem listItem in item)
{
output.Write("<a href='" + listItem["ServerUrl"] + "' target='_blank'><img src='" + listItem["ServerUrl"] + "' style='width:" + Convert.ToInt16(MarqueeWidth) / 5 + "px;height:" + Convert.ToInt16(MarqueeWidth) / 5 + "px; border-color:#ffffff'/></a>");
}
六、讓輸出的圖片滾動起來
就是加入一段javascript的圖片連續滾動腳本,所以整個RenderWebPart中代碼就變成了如下:
try{
SPList list = web.Lists["MarqueePhoto"];
SPListItemCollection item = list.Items;
output.Write("<div id=demo style=overflow:hidden;width:100%;color:#ffffff><table align=left cellpadding=0 cellspace=0 border=0><tr> <td id=demo1 valign=top>");
foreach (SPListItem listItem in item){
output.Write("<a href='" + listItem["ServerUrl"] + "' target='_blank'><img src='" + listItem["ServerUrl"] + "' style='width:" + Convert.ToInt16(MarqueeWidth) / 5 + "px;height:" + Convert.ToInt16(MarqueeWidth) / 5 + "px; border-color:#ffffff'/></a>");
}
output.Write("</td><td id=demo2 valign=top></td></tr></table></div><script>var speed=30;demo2.innerHTML=demo1.innerHTML;function Marquee(){ if(demo2.offsetWidth-demo.scrollLeft<=0){demo.scrollLeft-=demo1.offsetWidth}else{ demo.scrollLeft++}}var MyMar=setInterval(Marquee,speed);demo.onmouseover=function() {clearInterval(MyMar)};demo.onmouseout=function() {MyMar=setInterval(Marquee,speed)}</script>");
}catch {
output.Write("錯誤:請檢查圖片庫名稱是否為-MarqueePhoto");
}
最後記得要Dispose相關對象,以免出現內存溢出.到此為止,代碼段就寫完了,保存 / 編譯.接下來就是把已經寫好的WebPart部署到SPS網站上去
部署方法有多種,比如手動部署,CAB部署等等,我覺得最簡單的是InstallAssemblies這個工具,只要選擇已編譯好的dll文件,按下按鈕就部署好了,然後該WebPart就可以在已經部署的SPS網站上拖跩使用了.當然WebPart開發的應用有很多,比如可以定製菜單,屬性等等,SPS 2003 SDK裡面都有,了解相關的方法和屬性就可以了.
下篇會來總結一下,SPS 2003下WinForm的開發該如何進行.
浙公网安备 33010602011771号