SharePoint 2007圖文開發(fā)教程(4) 實現(xiàn)高級的WebPart

如果大家有開發(fā)服務(wù)器控件的基礎(chǔ),此文對你來說沒有什么難度。想了解相關(guān)內(nèi)容,參看我的《ASP.NET的服務(wù)器控件開發(fā)》系列。廢話不多說,直接進入今天的主題。
Demo 1
第一個例子也很簡單,點擊一個按鈕,顯示當(dāng)前系統(tǒng)時間。如何創(chuàng)建WebPart就不細說了,不清楚的朋友可以參看《SharePoint 2007圖文開發(fā)教程(3)---實現(xiàn)簡單的WebPart》。
直接看代碼:
- using System;
- using System.Runtime.InteropServices;
- using System.Web.UI;
- using System.Web.UI.WebControls.WebParts;
- using System.Web.UI.WebControls;
- using System.Web.UI.HtmlControls;
- using System.Xml.Serialization;
- using Microsoft.SharePoint;
- using Microsoft.SharePoint.WebControls;
- using Microsoft.SharePoint.WebPartPages;
- namespace GetNow
- {
- [Guid("0708695c-869c-4e8f-a6e9-cfcf148f404c")]
- public class GetNow : System.Web.UI.WebControls.WebParts.WebPart, INamingContainer
- {
- private string _text;
- private HtmlTableCell _tablecell = new HtmlTableCell();
- private Label lb = new Label();
- private Button btn = new Button();
- [WebBrowsable(true), Personalizable(true)]
- public string Text
- {
- get { return _text; }
- set { _text = value; }
- }
- public GetNow()
- {
- this.btn.Click += new EventHandler(btn_Click);
- this.ExportMode = WebPartExportMode.All;
- }
- /// <summary>
- /// 重寫OnLoad
- /// </summary>
- protected override void OnLoad(EventArgs e)
- {
- base.OnLoad(e);
- if (this.Page.IsPostBack == true)
- {
- this.AddControls();
- }
- }
- /// <summary>
- /// 重寫CreateChildControls
- /// </summary>
- protected override void CreateChildControls()
- {
- this.Controls.Add(new LiteralControl("<table>" + "\n"));
- this.Controls.Add(new LiteralControl(" <tr>" + "\n"));
- this.Controls.Add(this._tablecell);
- this.Controls.Add(new LiteralControl(" </tr>" + "\n"));
- this.Controls.Add(new LiteralControl("</table>" + "\n"));
- if (this.Page.IsPostBack == false)
- {
- this.AddControls();
- }
- }
- /// <summary>
- /// click處理函數(shù)
- /// </summary>
- void btn_Click(object sender, EventArgs e)
- {
- this._text = DateTime.Now.ToString();
- this._tablecell.InnerHtml = "";
- this.AddControls();
- }
- /// <summary>
- /// 重寫Render
- /// </summary>
- protected override void Render(HtmlTextWriter writer)
- {
- base.Render(writer);
- }
- private void AddControls()
- {
- this.lb.ID = this.ID + "Label";
- this.lb.Text = this._text;
- this._tablecell.Controls.Add(this.lb);
- this._tablecell.Controls.Add(new LiteralControl("<br>"));
- this.btn.ID = this.ID + "Button";
- this.btn.Text = "獲取當(dāng)前時間:";
- this._tablecell.Controls.Add(this.btn);
- }
- }
- }
按照上文的部署方法,將GetNow的WebPart添加到SharePoint網(wǎng)站中:測試一下,獲取時間成功!
Demo 2
第二個例子我們來實現(xiàn)WebPart的聯(lián)動控制,也就是說通過一個WebPart來控制另外一個WebPart。還是直接看代碼:
- using System;
- using System.Runtime.InteropServices;
- using System.Web.UI;
- using System.Web.UI.HtmlControls;
- using System.Web.UI.WebControls;
- using System.Web.UI.WebControls.WebParts;
- using System.Xml.Serialization;
- using System.Collections;
- using System.Drawing;
- using Microsoft.SharePoint;
- using Microsoft.SharePoint.WebControls;
- using Microsoft.SharePoint.WebPartPages;
- using GetNow;
- namespace SetColor
- {
- [Guid("803617a2-9dc9-4eb8-b05c-3e064bc16642")]
- public class SetColor : System.Web.UI.WebControls.WebParts.WebPart, IPostBackEventHandler
- {
- private IList _colorlist = new ArrayList();
- private HtmlTableCell _TableCell = new HtmlTableCell();
- public SetColor()
- {
- this.GetItems();
- this.ExportMode = WebPartExportMode.All;
- }
- private void GetItems()
- {
- this._colorlist.Add("紅色");
- this._colorlist.Add("黃色");
- this._colorlist.Add("藍色");
- this._colorlist.Add("綠色");
- this._colorlist.Add("紫色");
- }
- private void AddRows()
- {
- for (int i = 0; i < _colorlist.Count; i++)
- {
- this._TableCell.Controls.Add(new LiteralControl("<table>" + "\n"));
- this._TableCell.Controls.Add(new LiteralControl(" <tr>" + "\n"));
- this._TableCell.Controls.Add(new LiteralControl(" <td style=\"cursor:hand\" onclick=\"" + this.Page.ClientScript.GetPostBackEventReference(this, this._colorlist[i].ToString()) + "\">" + this._colorlist[i].ToString() + "</td>" + "\n"));
- this._TableCell.Controls.Add(new LiteralControl(" </tr>" + "\n"));
- this._TableCell.Controls.Add(new LiteralControl("</table>" + "\n"));
- }
- }
- protected override void CreateChildControls()
- {
- this.Controls.Add(new LiteralControl("<table>" + "\n"));
- this.Controls.Add(new LiteralControl(" <tr>" + "\n"));
- this.Controls.Add(this._TableCell);
- this.Controls.Add(new LiteralControl(" </tr>" + "\n"));
- this.Controls.Add(new LiteralControl("</table>" + "\n"));
- if (this.Page.IsPostBack == false)
- {
- this.AddRows();
- }
- }
- protected override void OnLoad(EventArgs e)
- {
- base.OnLoad(e);
- if (this.Page.IsPostBack == true)
- {
- this.AddRows();
- }
- }
- protected override void Render(HtmlTextWriter writer)
- {
- base.Render(writer);
- }
- public void RaisePostBackEvent(string eventArgument)
- {
- for (int i = 0; i < WebPartManager.WebParts.Count; i++)
- {
- if (WebPartManager.WebParts[i].Title == "GetNow")
- {
- GetNow.GetNow instance = (GetNow.GetNow)WebPartManager.WebParts[i];
- switch (eventArgument)
- {
- case "紅色":
- instance.BackColor = Color.Red;
- break;
- case "黃色":
- instance.BackColor = Color.Yellow;
- break;
- case "藍色":
- instance.BackColor = Color.Blue;
- break;
- case "綠色":
- instance.BackColor = Color.Green;
- break;
- case "紫色":
- instance.BackColor = Color.Purple;
- break;
- default:
- break;
- }
- }
- }
- }
- }
- }
代碼不是很難,創(chuàng)建一個WebPart,向其中添加一個List,提供用戶幾種顏色的選擇情況,然后通過用戶選擇的情況改變我們上面GetNow這個WebPart的背景顏色。
按照前面的方法加到SharePoint網(wǎng)站中:
選擇紅色:
選擇紫色:
ok。我們想要的效果已經(jīng)實現(xiàn)啦!
小結(jié):上面只是自己拋磚引玉的小例子,希望對新手有幫助。對于WebPart的開發(fā)部分就介紹這些吧,望支持。有什么不得當(dāng)?shù)牡胤竭€望大家指教。根據(jù)自己的業(yè)務(wù)需要,大家可以開發(fā)出更實用的WebPart。還有建議大家多看看服務(wù)器控件開發(fā)的文章,會有幫助!
相關(guān)文章
SharePoint 2007圖文開發(fā)教程(8) Excel Services掃盲
SharePoint 2007中,Excel Services是不得不提的,它是 Microsoft Office SharePoint Server 2007 中包含的一項新的服務(wù)器技術(shù)2015-12-29SharePoint 2007圖文開發(fā)教程(7) 在SharePoint中實現(xiàn)Workflow
繼續(xù)我們的SharePoint之旅,體驗Workflow的應(yīng)用,由于以前也很少弄WF,望有什么問題WF的高手多多指教2015-12-29SharePoint 2007圖文開發(fā)教程(6) 實現(xiàn)Search Services
SharePoint中為我們提供了Search的功能,和Event Handler的實現(xiàn)比較類似,還是需要啟動支持,定制服務(wù),運行服務(wù)幾部分內(nèi)容,下面逐一說下2015-12-29SharePoint 2007圖文開發(fā)教程(5) 體驗Event Handler
前面兩篇文章介紹了有關(guān)WebPart的相關(guān)內(nèi)容,此文繼續(xù)SharePoint之旅,體驗下Event Handler的相關(guān)內(nèi)容,需要的朋友可以參考下2015-12-29SharePoint 2007圖文開發(fā)教程(3) 實現(xiàn)簡單的WebPart
在前面的文章中,我們講解了很多基礎(chǔ)的內(nèi)容,主要包括 安裝配置、簡單的創(chuàng)建網(wǎng)站等。相對來說比較簡單。此文實現(xiàn)簡單的WebPart,繼續(xù)我們的SharePoint之旅2015-12-29SharePoint 2007圖文開發(fā)教程(2) 使用SharePoint創(chuàng)建網(wǎng)站的步驟
上文簡單介紹了有關(guān)SharePoint的安裝,配置等內(nèi)容的介紹。此文我們繼續(xù)SharePoint之旅,通過SharePoint創(chuàng)建網(wǎng)站,需要的朋友可以參考下2015-12-29SharePoint 2007圖文開發(fā)教程(1) 簡介,安裝,配置及創(chuàng)建Web應(yīng)用程序
Microsoft Office SharePoint Server 2007 是一個服務(wù)器功能集成套件,它提供全面的內(nèi)容管理和企業(yè)搜索、加速共享業(yè)務(wù)流程并便利跨界限信息共享以更好地了解業(yè)務(wù),從而有助2015-12-29SharePoint Designer 2007 官方簡體中文版
Frontpage 2003的下一個版本,不過這個版本絕對不是Frontpage 2003的簡單改進版,Microsoft Office SharePoint Designer 2007 是一種全新的Web2.0產(chǎn)品,用于基于 SharePoin2015-12-29Microsoft Office SharePoint Server 2007 SDK軟件開發(fā)工具包 簡體中文
為了讓解決方案提供商、獨立軟件供應(yīng)商、增值經(jīng)銷商以及其他開發(fā)人員了解全新的 Office SharePoint Server 2007 企業(yè)應(yīng)用程序和平臺2015-03-25亮劍.NET:SharePoint Server 2007開發(fā)實戰(zhàn) (張建義,王俞) pdf掃描版
本書共分為8章,詳細講解了sharepoint上常見的開發(fā)任務(wù),講述了各種開發(fā)場景下需要了解的知識,并提供了豐富的實例2013-10-27