由于在asp.net1.1的时候asp.net中还没有webpart的概念,所以在sps2003中的webpart都是依赖于Microsoft.SharePoint.dll的,必须继承自命名空间为Microsoft.SharePoint.WebPartPages下的基类。到了asp.net2.0,asp.net将sharepoint的webpart集成到asp.net框架中,新的ASP风格WebPart依赖于System.Web.dll,继承自不同的一个由ASP.NET 2.0定义的WebPart基类,其命名空间为System.Web.UI.WebControls.WebParts。在moss中推荐使用asp.net2.0的webpart。
using ………
namespace CaryWebPart
{
[Guid("288802c4-4dfe-45b6-bb28-49dda89ec225")]
public class FileUploadWP : System.Web.UI.WebControls.WebParts.WebPart
{
FileUpload objFileUpload = new FileUpload();
protected override void CreateChildControls()
{
Controls.Add(objFileUpload);
Button btnUpload = new Button();
btnUpload.Text = "Save File";
this.Load += new System.EventHandler(btnUpload_Click);
Controls.Add(btnUpload);
}
private void btnUpload_Click(object sender, EventArgs e)
{
using (SPSite objSite = new SPSite(SiteCollectionUrl))
{
using (SPWeb objWeb = objSite.OpenWeb(SiteUrl))
{
SPList objList = objWeb.Lists[ListName];
if (objFileUpload.HasFile)
{
try
{
objList.RootFolder.Files.Add(objFileUpload.FileName,
objFileUpload.PostedFile.InputStream, true);
}
catch(Exception ex)
{
string a = ex.Message;
}
}
}
}
}
private string _strSiteCollectionUrl;
[Personalizable(PersonalizationScope.Shared), WebBrowsable(true),
WebDisplayName("网站集URL"), WebDescription("请输入网站集URL")]
public string SiteCollectionUrl
{
get { return _strSiteCollectionUrl; }
set { _strSiteCollectionUrl = value; }
}
private string _strSiteUrl;
[Personalizable(PersonalizationScope.Shared), WebBrowsable(true),
WebDisplayName("网站URL"), WebDescription("请输入网站URL")]
public string SiteUrl
{
get { return _strSiteUrl; }
set { _strSiteUrl = value; }
}
private string _strListName;
[Personalizable(PersonalizationScope.Shared), WebBrowsable(true),
WebDisplayName("列表名称"), WebDescription("请输入列表名称")]
public string ListName
{
get { return _strListName; }
set { _strListName = value; }
}
}
}
下面是部署后的截图:
using ………
namespace WebResource
{
public class PlaceHolder
{}
}
string strUrl = Page.ClientScript.GetWebResourceUrl(typeof(WebResource.PlaceHolder), strResource);
获取到的url如下形式“/WebResource.axd?d=[Assembly key]&t=[last write time of resource assembly]”
/WebResource.axd?d=A34Cgk8tSLsOaGW2Mtx1-iMMZgj-CEJ77updNPilqoda3ab0CWc1mJqVyolRohMp0&t=633457672629813944
{
public class WebResourceWP : System.Web.UI.WebControls.WebParts.WebPart
{
protected override void CreateChildControls()
{
string strResource = "WebResource.icons.recycbin.gif";
string strUrl = Page.ClientScript.GetWebResourceUrl(typeof(WebResource.PlaceHolder), strResource);
BulletedList objBullist = new BulletedList();
objBullist.BulletStyle = BulletStyle.CustomImage;
objBullist.BulletImageUrl = strUrl;
objBullist.Items.Add("One");
objBullist.Items.Add("Two");
objBullist.Items.Add("Three");
objBullist.Items.Add("Four");
Controls.Add(objBullist);
}
}
}
objFirst.Text = "第一个verb";
objFirst.Description = "第一个verb信息描述";
objFirst.ImageUrl = "_layouts/p_w_picpaths/test/recycbin.gif";
objSecond.Text = "第二个verb";
objSecond.Description = "第二个verb信息描述";
WebPartVerbCollection objVerbCollection = new WebPartVerbCollection(base.Verbs, objVerbs);
using ………
namespace CaryWebPart
{
[Guid("288802c4-4dfe-45b6-bb28-49dda89ec225")]
public class VerbsWP: System.Web.UI.WebControls.WebParts.WebPart
{
public override WebPartVerbCollection Verbs
{
get
{
WebPartVerb objFirst = new WebPartVerb("FirVerbId", "javascript:alert('Hello Verb!');");
objFirst.Text = "第一个verb";
objFirst.Description = "第一个verb信息描述";
objFirst.ImageUrl = "_layouts/p_w_picpaths/test/recycbin.gif";
WebPartVerb objSecond = new WebPartVerb("SecVerbId", new WebPartEventHandler(SecondVerbHandler));
objSecond.Text = "第二个verb";
objSecond.Description = "第二个verb信息描述";
WebPartVerb[] objVerbs = new WebPartVerb[] { objFirst, objSecond };
WebPartVerbCollection objVerbCollection = new WebPartVerbCollection(base.Verbs, objVerbs);
return objVerbCollection;
}
}
protected void SecondVerbHandler(object sender, WebPartEventArgs args)
{
}
}
}
{
[Guid("288802c4-4dfe-45b6-bb28-49dda89ec225")]
public class ForEditWP:System.Web.UI.WebControls.WebParts.WebPart
{
protected override void RenderContents(HtmlTextWriter writer)
{
writer.Write("TestValue: " + TestValue);
}
public override EditorPartCollection CreateEditorParts()
{
EditWP objEditor = new EditWP();
objEditor.ID = ID + "testEditor1";
objEditor.Title = "Test Editor Title";
objEditor.ToolTip = "Test Editor tooltip";
objEditor.TabIndex = 100;
objEditor.GroupingText = "Test editor grouping text";
ArrayList objEditorParts = new ArrayList();
objEditorParts.Add(objEditor);
EditorPartCollection objEditorPartsCollection = new EditorPartCollection(objEditorParts);
return objEditorPartsCollection;
}
private string strNormalValue = String.Empty;
[Personalizable(PersonalizationScope.Shared), WebBrowsable(false), WebDisplayName("Normal value"), WebDescription("Normal value description")]
public string TestValue
{
get { return strNormalValue; }
set { strNormalValue = value; }
}
}
}
using ………
namespace CaryWebPart
{
public class EditWP : EditorPart
{
TextBox txtNormalBox;
protected override void CreateChildControls()
{
txtNormalBox = new TextBox();
txtNormalBox.ID = "txtNormalBox";
txtNormalBox.Text = "[Custom editor part]";
txtNormalBox.TextMode = TextBoxMode.MultiLine;
txtNormalBox.Rows = 5;
Controls.Add(txtNormalBox);
}
public override bool ApplyChanges()
{
ForEditWP objNormal = (ForEditWP)WebPartToEdit;
objNormal.TestValue= txtNormalBox.Text;
return true;
}
public override void SyncChanges()
{
EnsureChildControls();
ForEditWP objNormal = (ForEditWP)WebPartToEdit;
txtNormalBox.Text = objNormal.TestValue;
}
}
}