步步为营 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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
现在有两种不同的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开始:
代码设计:
在我们建好的springblog中作如下操作把webpart加入站点中:
1、首先把自己写的webpart激活。如下点击populategallery.
2、在springblog加载webpart,首先点击editpage.
3、再点击addwebapart后,选择我们的samplewebpart.
4、结果如我们所想的一样
接着我们做一个复杂点的,用户登陆webpart.要做这样一个webpart,我们先要加一个usercontrol,名字命名为LoginUserControl.ascx,
代码设计如下:
后台的代码如下:
UserBE和UserBO的代码相信大家都懂的,我就不贴出来了.
WebPart的代码如下:
结果如下图:
出现我们预想的画面。
接下来我们再做一个用户祥细信息的webpart和editwebpart.
作者:
出处:
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
相关文章推荐
- 步步为营 SharePoint 开发学习笔记系列总结
- 步步为营 SharePoint 开发学习笔记系列 三、创建Web Application和创建Site
- 步步为营 SharePoint 开发学习笔记系列 十一、SharePoint 对list操作
- 步步为营 SharePoint 开发学习笔记系列总结
- 步步为营 SharePoint 开发学习笔记系列 七、SharePoint Timer Job 开发
- 步步为营 SharePoint 开发学习笔记系列 一、简介
- 步步为营 SharePoint 开发学习笔记系列 六、EditorPart开发
- 步步为营 SharePoint 开发学习笔记系列 一、简介
- 步步为营 SharePoint 开发学习笔记系列 二、安装和配置
- 步步为营 SharePoint 开发学习笔记系列 三、创建Web Application和创建Site
- 【转】步步为营 SharePoint 开发学习笔记系列总结
- 步步为营 SharePoint 开发学习笔记系列 四、创建sub site和创建list
- 步步为营 SharePoint 开发学习笔记系列 四、创建sub site和创建list
- 步步为营 SharePoint 开发学习笔记系列 五、Web Part开发
- 步步为营 SharePoint 开发学习笔记系列 十、SharePoint web service 开发(下)
- 步步为营 SharePoint 开发学习笔记系列总结
- 步步为营 SharePoint 开发学习笔记系列 九、SharePoint web service 开发(上)
- 步步为营 SharePoint 开发学习笔记系列总结
- 步步为营 SharePoint 开发学习笔记系列 七、SharePoint Timer Job 开发
- 步步为营 SharePoint 开发学习笔记系列 八、SharePoint EventHandler开发