http://www.cnblogs.com/walkinhill/
SharePoint 应用的开发学习笔记(-)
Microsoft Office SharePoint Portal Server 2003 将业务流程中的人员、工作组和知识连接在一起。它将分散的信息统一起来,便于就文档、项目和其他工作进行协作,并根据用户的功能组和组织角色呈现特定应用程序和自定义内容。SharePoint Portal Server 可与 Microsoft Windows 资源管理器、Microsoft Office 应用程序和 Web 浏览器协同工作,帮助您在整个组织范围内创建、管理和共享内容。
借助于 Microsoft Windows Server 2003,SharePoint Portal Server 与 Microsoft Office 2003、Microsoft Windows SharePoint Services 和 Microsoft SQL Server 2000 SP3 集成在一起,创建将整个组织连接起来的统一门户网站。
SharePoint Portal Server 提供以下方面的解决方案:
用户的个人环境
在Windows 2003 Server 中提供了Windows SharePoint Service,应该说它是SharePoint Portal Server 2003的简化版本,区别主要就在于功能较少,比如说没有“My Site”,不能与Biztalk、Exchange Server 等结合使用...更详细的信息可以参考:http://www.microsoft.com/sharepoint/evaluationoverview.asp。
如果你没有安装Windows 2003 Server也没有关系,你可以到 www.sharepointtrial.com 申请一个三十天的试用(对于想我这种入门级的人是够用了)。
SharePoint 本身提供了非常强大的功能,基于Web Part的概念,你可以不使用任何代码编辑软件(包括HTML代码和程序代码)构建一个非常强大的公司门户网站,实现公司、团队间的资源共享。据说微软使用SharePoint 2003 Server 搭建的系统大大提高了微软的工作效率。
但是对于程序员来说往往不会满足现有的功能,这时候你可以通过编程开发的方法来扩充SharePoint的功能,比如说你想放一个小型的日历在首页,这时仅仅通过SharePoint提供的功能很难实现,就需要自己扩充它的功能了
。
在了解如何扩充SharePoint之前,首先应该了解一下SharePoint 的架构:
1、SharePoint 的基础:WebPart Pages。虽然SharePoint 是基于asp.net的一个解决方案,使用的也是asp.net的web form,但是它与普通的web页面具有一定的区别,那就是SharePoint中大部分的页面都是所谓的Web部件页(WebPart Pages),WebPart Page本身继承自System.Web.UI.Page,但是与普通的Web Form不一样,不能在WebPart Page 放入服务器端代码,它的所有功能都是依赖于放置在其上的Web部件来实现。因此,WebPart Pages 实际上就是由一部分静态的HTML代码和大部分的Web部件构成。换句话说,日后你需要扩充SharePoint的功能,就是通过开发自己的Web部件来实现的(后面还将介绍Web部件的开发)。
2、WebPart(Web部件):实质为一个服务器端控件(asp.net的Web自定义控件)。一般来说自己开发的WebPart继承自:Microsoft.SharePoint.WebPartPages.WebPart,不是继承自WebControl。但是开发WebPart与开发asp.net Web自定义没有太大的区别。
2、SharePoint的对象模型。SharePoint本身包含了很多的数据,在开发自己的Web部件往往需要访问这些数据。你可以直接访问数据库,但这并不是明智的选择,因为sharePoint的数据库实在太负责。为此,SharePoint提供了另外两种方便的方法:Web Services和SharePoint 自带的对象模型。
在新建SharePoint站点时,SharePoint服务器将自动创建一系列的Web Service供你访问SharePoint的数据。如图:
图中列出了可以访问和操作SharePoint中所有列表的方法。
但是这些方法处理起来并不是很方便,因为他们的返回值一般都是 XMLNode,这里包含了很多内容,你还需要特殊处理才能得到所需的结果。
使用SharePoint自身的对象模型是最简单的方法。
可用对象模型实现的功能:
1从 WSS 列表增添, 修改, 删除, 获取数据
2建立新的列表和设置列表参数 (比如建立 域 field)
3设置网站参数
4修改文档库内的文档
5进行管理工作,如创建网站,添加用户,建立用户组, 等
6 几乎 UI 内的所有功能都能用 OM 来 Automate
下面是一段代码:
SPWeb web = SPControl.GetContextWeb(Context);
SPList tasks = web.Lists["Tasks"];
SPListItemCollection items=tasks.Items;
foreach(SPListItem item in items)
{
output.Write(item["Title"].ToString() + item["Status"].ToString() + "<br>");
}
这段代码访问当前SharePoint站点的任务列表。
通过该对象模型几乎可以完成所有的工作。
后面的文章介绍一下Web Part的开发和该对象模型的具体使用。
先给出一点学习的资料:
视频资料:http://www.microsoft.com/china/office/sharepoint/prodinfo/videos.mspx
示例代码和视频资料:http://www.sharepointcustomization.com
msdn的SharePoint专栏:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/spptsdk/html/CreateABasicWP.asp?frame=true
SharePoint 应用的开发学习笔记(二)
使用Visual Studio.NET 开发Web Parts(Web部件)
对SharePoint进行扩充的一个最好的方法就是开发自己的Web部件,但是在开发Web部件之前首先要下载Web Part Templates for Visual Studio .NET:(http://www.microsoft.com/downloads/details.aspx?FamilyId=14D5D92F-C3A6-407C-AAD7-B8C41A4991BE&displaylang=en)。
Web部件与普通的asp.net自定义控件没有什么区别,如果你具有开发asp.net自定义控件的经验的话,开发Web部件就轻车熟路了。
下面是我自己开发的一个很简单的Web部件,如图右下角的SimpleWebPart(实现了简单的加法运算):
using System;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml.Serialization;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.WebPartPages;
namespace MyWebParts
{
/// <summary>
/// Description for WebPart1.
/// </summary>
[DefaultProperty("Text"),
ToolboxData("<{0}:WebPart1 runat=server></{0}:SimpleWebPart>"),
XmlRoot(Namespace="MyWebParts")]
public class SimpleWebPart : Microsoft.SharePoint.WebPartPages.WebPart
{
protected TextBox txtValue1;
protected TextBox txtValue2;
protected TextBox txtResult;
protected Label lblOp;
protected Label lblEq;
protected Button btnCalc;
//private const string defaultText = "";
//private string text = defaultText;
// [Browsable(true),
// Category("Miscellaneous"),
// DefaultValue(defaultText),
// WebPartStorage(Storage.Personal),
// FriendlyName("Text"),
// Description("Text Property")]
// public string Text
// {
// get
// {
// return text;
// }
//
// set
// {
// text = value;
// }
// }
private bool calcEnabled = true;
[Browsable(true),
Description("是否启用计算功能!"),
WebPartStorage(Storage.Personal),
FriendlyName("允许计算"),
DefaultValue(true),
Category("自定义")
]
public bool CalcEnabled
{
get
{
return calcEnabled;
}
set
{
calcEnabled = value;
if( this.btnCalc != null )
{
this.btnCalc.Enabled = value;
}
}
}
/// <summary>
/// This method gets the custom tool parts for this Web Part by overriding the
/// GetToolParts method of the WebPart base class. You must implement
/// custom tool parts in a separate class that derives from
/// Microsoft.SharePoint.WebPartPages.ToolPart.
/// </summary>
///<returns>An array of references to ToolPart objects.</returns>
// public override ToolPart[] GetToolParts()
// {
// ToolPart[] toolparts = new ToolPart[2];
// WebPartToolPart wptp = new WebPartToolPart();
// CustomPropertyToolPart custom = new CustomPropertyToolPart();
// custom.Expand("自定义");
// toolparts[0] = custom;
// toolparts[1] = wptp;
// return toolparts;
// }
/// <summary>
/// Render this Web Part to the output parameter specified.
/// </summary>
/// <param name="output"> The HTML writer to write out to </param>
protected override void RenderWebPart(HtmlTextWriter output)
{
//output.Write(SPEncode.HtmlEncode(Text));
EnsureChildControls();
output.RenderBeginTag("div");
//RenderChildren(output);
this.txtValue1.RenderControl(output);
output.AddStyleAttribute(HtmlTextWriterStyle.FontWeight,"bold");
output.RenderBeginTag("span");
this.lblOp.RenderControl(output);
output.RenderEndTag(); //span
this.txtValue2.RenderControl(output);
this.lblEq.RenderControl(output);
this.txtResult.RenderControl(output);
this.btnCalc.RenderControl(output);
output.RenderEndTag(); //div
}
protected override void CreateChildControls()
{
//初始化文本框
txtValue1 = new TextBox();
txtValue2 = new TextBox();
txtValue1.Text = "1";
txtValue2.Text = "2";
lblOp = new Label();
lblOp.Text = " + ";
lblEq = new Label();
lblEq.Text = " = ";
txtResult = new TextBox();
txtResult.ReadOnly = true;
btnCalc = new Button();
btnCalc.Text = "Calculate";
btnCalc.Click += new EventHandler(btnCalc_Click);
btnCalc.Enabled = calcEnabled;
Controls.Add(txtValue1);
Controls.Add(lblOp);
Controls.Add(txtValue2);
Controls.Add(lblEq);
Controls.Add(txtResult);
Controls.Add(btnCalc);
base.CreateChildControls ();
}
public void btnCalc_Click(object sender,System.EventArgs e)
{
if( txtValue1.Text.Trim().Length > 0 && txtValue2.Text.Trim().Length > 0 )
{
this.txtResult.Text = Convert.ToString(Convert.ToDouble(txtValue1.Text) + Convert.ToDouble(txtValue2.Text));
}
}
}
}
从上面的代码可以看出,一般来说自定义的WebPart 都继承自Microsoft.SharePoint.WebPartPages.WebPart,而不是继承自WebControl。
详细的可以参考:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/spptsdk/html/CreateABasicWP.asp
浙公网安备 33010602011771号