您的位置:首页 > 其它

步步为营 SharePoint 开发学习笔记系列 五、Web Part开发

2011-07-22 15:35 741 查看
概要

现在有两种不同的Web部件。老的WSS风格的WebPart依赖于Microsoft.SharePoint.dll,必须继承自WSS2.0所定义的WebPart基类,其命名空间为Microsoft.SharePoint.WebPartPages。新的ASP风格WebPart依赖于System.Web.dll,必须继承自不同的一个由ASP.NET2.0定义的WebPart基类,其命名空间为System.Web.UI.WebControls.WebParts。

我们将从简单的helloWordwebpart开始:

代码设计:

usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Web.UI.WebControls.WebParts; usingSystem.Xml.Serialization; usingSystem.Web.UI; namespaceLearnWriteWebPart.Webpart { [ToolboxData("<{0}:SampleWebPartrunat=server></{0}:SampleWebPart>")] [XmlRoot(Namespace="LearnWriteWebPart.Webpart")] publicclassSampleWebPart:WebPart { privatestring_Text="HelloWorld!"; [WebBrowsable(true),Personalizable(true)] publicstringText { get{return_Text;} set{_Text=value;} } protectedoverridevoidRender(System.Web.UI.HtmlTextWriterwriter) { writer.Write(_Text); } } }
在我们建好的springblog中作如下操作把webpart加入站点中:

1、首先把自己写的webpart激活。如下点击populategallery.





2、在springblog加载webpart,首先点击editpage.





3、再点击addwebapart后,选择我们的samplewebpart.





4、结果如我们所想的一样





接着我们做一个复杂点的,用户登陆webpart.要做这样一个webpart,我们先要加一个usercontrol,名字命名为LoginUserControl.ascx,

代码设计如下:

<%@ControlLanguage="C#"AutoEventWireup="true"CodeFile="LoginUserControl.ascx.cs"Inherits="WebUserControl_LoginUserControl"%> <styletype="text/css"> .style1 { width:32%; height:28px; } .style2 { width:128px; } </style> <tableclass="style1"> <tr> <tdclass="style2"> <asp:LabelID="lblUserAccount"runat="server"Text="UserAccount:"></asp:Label> </td> <td> <asp:TextBoxID="txtUserAccount"runat="server"TabIndex="1"></asp:TextBox> <asp:RequiredFieldValidatorID="rfvUserAccount"runat="server" ControlToValidate="txtUserAccount"ErrorMessage="用户名不能为空"></asp:RequiredFieldValidator> </td> </tr> <tr> <tdclass="style2"> <asp:LabelID="lblPassword"runat="server"Text="Password:"></asp:Label> </td> <td> <asp:TextBoxID="txtPassword"runat="server"TextMode="Password"TabIndex="2"></asp:TextBox> <asp:RequiredFieldValidatorID="rfvPassword"runat="server" ControlToValidate="txtPassWord"ErrorMessage="密码不能为空"></asp:RequiredFieldValidator> </td> </tr> <tr> <tdclass="style2">  </td> <td> <asp:ButtonID="btnLogin"runat="server"TabIndex="3"onclick="btnLogin_Click" Text="Login"/> <asp:LabelID="lblResult"runat="server"BorderColor="Red"ForeColor="Red"></asp:Label> </td> </tr> </table>

后台的代码如下:

usingSystem; usingSystem.Collections; usingSystem.Configuration; usingSystem.Data; usingSystem.Linq; usingSystem.Web; usingSystem.Web.Security; usingSystem.Web.UI; usingSystem.Web.UI.HtmlControls; usingSystem.Web.UI.WebControls; usingSystem.Web.UI.WebControls.WebParts; usingSystem.Xml.Linq; usingLearnWriteWebPart.BE; usingLearnWriteWebPart.BO; usingLearnWriteWebPart.Util; publicpartialclassWebUserControl_LoginUserControl:System.Web.UI.UserControl { ///<summary> /// ///</summary> ///<paramname="sender"></param> ///<paramname="e"></param> protectedvoidPage_Load(objectsender,EventArgse) { if(!Page.IsPostBack) { SetInitial(); } } protectedvoidbtnLogin_Click(objectsender,EventArgse) { if(!CheckUserAccountLength()) return; if(!CheckPasswordLength()) return; this.CheckLogin(); } #regionPrivateMethod ///<summary> ///InitialControl ///</summary> privatevoidSetInitial() { txtUserAccount.Focus(); CodeHelper.DisableIMEModes(newTextBox[]{txtUserAccount,txtPassword}); } ///<summary> ///Checklogin ///</summary> privatevoidCheckLogin() { UserBEuserBE=newUserBE(); UserBOuserBO=newUserBO(); userBE.UserAccount=txtUserAccount.Text.Trim(); userBE.Password=txtPassword.Text.Trim(); if(userBO.CheckUserLogin(userBE)) { lblResult.Text=Constants.SUSSCESSFULLOGIN_USER; } else { lblResult.Text=Constants.ERRORLOGIN_USER; } } ///<summary> ///checkpasswordlength ///</summary> ///<returns></returns> privateboolCheckPasswordLength() { intlength=txtPassword.Text.Trim().Length; if(length<6) { lblResult.Text=Constants.PASSWORDMINLENGTH_USER; returnfalse; } elseif(length>20) { lblResult.Text=Constants.PASSWORDMAXLENGTH_USER; returnfalse; } returntrue; } ///<summary> ///Checkuseraccountlength ///</summary> ///<returns></returns> privateboolCheckUserAccountLength() { intlength=txtUserAccount.Text.Trim().Length; if(length>20) { lblResult.Text=Constants.USERACCOUNTMAXLENGTH_USER; returnfalse; } returntrue; } #endregion }

UserBE和UserBO的代码相信大家都懂的,我就不贴出来了.

WebPart的代码如下:

usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Web.UI.WebControls.WebParts; usingSystem.Xml.Serialization; usingSystem.Web.UI; usingLearnWriteWebPart.Util; namespaceLearnWriteWebPart.Webpart { [ToolboxData("<{0}:UserWebPartrunat=server></{0}:UserWebPart>")] [XmlRoot(Namespace="LearnWriteWebPart.Webpart")] publicclassUserWebPart:WebPart { #region[PrivateVariable] privatestring_ListName=string.Empty; privatestring_Url=string.Empty; privatestringTheListName=Constants.LISTNAME_USER; privateUserControl_userControl; #endregion #region[CustomProperties] ///<summary> ///Thislistnaem ///</summary> [WebBrowsable(false), Personalizable(true)] publicstringListName { get { return_ListName; } set { _ListName=value; } } ///<summary> ///ThelistUrl ///</summary> [WebBrowsable(false), Personalizable(true)] publicstringUrl { get { return_Url; } set { _Url=value; } } #endregion #region[Constructors] ///<summary> ///Thesampleconstructor ///</summary> publicUserWebPart() { this.ListName=TheListName; } #endregion #region[OverrideMethods] ///<summary> ///OverridemethodtoOnInitmethod ///</summary> ///<paramname="e">TheEventsArgsobject</param> protectedoverridevoidOnInit(EventArgse) { base.OnInit(e); SetWebPartTitleAndUrlWhenAdded(this.ListName,this.Url); AddControlToWebPart(); } #endregion #region[PrivateMethods] ///<summary> ///AddLoginControl ///</summary> privatevoidAddControlToWebPart() { TypecontrolType=Type.GetType("ASP.webusercontrol_loginusercontrol_ascx,Web_deploy,Version=1.0.0.0,Culture=neutral,PublicKeyToken=1234567f94a516f5"); _userControl=(UserControl)this.Page.LoadControl(controlType,null); this.Controls.Add(_userControl); } ///<summary> ///Setwebparttitleandurl ///</summary> ///<paramname="ListName"></param> ///<paramname="Url"></param> privatevoidSetWebPartTitleAndUrlWhenAdded(stringListName,stringUrl) { this.Title=this.ListName; this.TitleUrl=this.Url; } #endregion } }

结果如下图:






出现我们预想的画面。

接下来我们再做一个用户祥细信息的webpart和editwebpart.

作者:springyang

出处:http://www.cnblogs.com/springyangwc/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐