步步为营 SharePoint 开发学习笔记系列 六、EditorPart开发
2011-07-22 16:49
801 查看
概要
System.Web.UI.WebControls.WebParts,并让这个类继承EditorPart类,并实现它的两个方法ApplyChanges和SyncChanges,简单描述:
ApplyChanges:是由配置界面向WebPart传值;
SyncChanges:是由WebPart向配置界面传值。
就是实现如下图的效果:
在我们定制的用户祥细信息webpart点击modifysharedwebpart的显示界面上显示我们定制的用户祥细信息,显所的部门和级别.
代码设计:
新建用户祥细信息webpart的usercontrol设计,新建UserDetailUserControl.ascx:
page设计:
<%@ControlLanguage="C#"AutoEventWireup="true"CodeFile="UserDetailUserControl.ascx.cs"Inherits="WebUserControl_UserDetailUserControl"%>
<styletype="text/css">
.style1
{
width:23%;
height:82px;
}
.style2
{
width:112px;
}
.style3
{
width:112px;
height:21px;
}
.style4
{
height:21px;
}
</style>
<tableclass="style1">
<tr>
<tdclass="style2">
<asp:LabelID="lblName"runat="server"Text="Name"></asp:Label>
:</td>
<td>
<asp:LabelID="lblUserName"runat="server"></asp:Label>
</td>
</tr>
<tr>
<tdclass="style3">
<asp:LabelID="lblAge"runat="server"Text="Age"></asp:Label>
:</td>
<tdclass="style4">
<asp:LabelID="lblUserAge"runat="server"></asp:Label>
</td>
</tr>
<tr>
<tdclass="style2">
<asp:LabelID="lblSex"runat="server"Text="Sex"></asp:Label>
:</td>
<td>
<asp:LabelID="lblUserSex"runat="server"></asp:Label>
</td>
</tr>
<tr>
<tdclass="style2">
<asp:LabelID="lblCity"runat="server"Text="City"></asp:Label>
:</td>
<td>
<asp:LabelID="lblUserCity"runat="server"></asp:Label>
</td>
</tr>
</table>
UserDetailUserControl.ascx.cs的代码设计:
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;
usingLearnWriteWebPart.Interface;
publicpartialclassWebUserControl_UserDetailUserControl:System.Web.UI.UserControl
{
privatestringparmKeyItemId="ItemID";
///<summary>
///ThepropertythatholdsItemid.
///</summary>
privateintItemId
{
get
{
if(Request[this.parmKeyItemId]!=null)
returnConvert.ToInt32(Request[this.parmKeyItemId].ToString());
elsereturnConstants.USERDETAIL_ID_DEFAULT;
}
}
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!IsPostBack)
{
BindData();
}
}
privatevoidBindData()
{
UserBObo=newUserBO();
UserBEuser=bo.GetUserByID(ItemId);
lblUserName.Text=user.UserAccount;
lblUserAge.Text=user.Age;
lblUserSex.Text=user.Sex;
lblUserCity.Text=user.City;
}
}
webpart代码的设计:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Xml.Serialization;
usingSystem.Web.UI;
usingLearnWriteWebPart.Util;
usingLearnWriteWebPart.Interface;
usingSystem.Collections;
usingSystem.ComponentModel;
usingMicrosoft.SharePoint.WebPartPages;
namespaceLearnWriteWebPart.Webpart
{
[ToolboxData("<{0}:UserDetailWebPartrunat=server></{0}:UserDetailWebPart>")]
[XmlRoot(Namespace="LearnWriteWebPart.Webpart")]
publicclassUserDetailWebPart:System.Web.UI.WebControls.WebParts.WebPart,IUserGroup
{
#region[PrivateVariable]
privatestring_ListName=string.Empty;
privatestring_Url=string.Empty;
privatestringTheListName=Constants.LISTNAME_USERDETAIL;
privateUserControl_userControl;
privatestring_Dept;
privatestring_Level;
#endregion
#region[CustomProperties]
///<summary>
///Thepropertythatholdshowmanyrowswillberetrieved
///</summary>
[WebBrowsable(false),
Personalizable(true)]
publicstringDept
{
get
{
return_Dept;
}
set
{
_Dept=value;
}
}
///<summary>
///Thepropertythatholdshowmanyrowswillberetrieved
///</summary>
[WebBrowsable(false),
Personalizable(true)]
publicstringLevel
{
get
{
return_Level;
}
set
{
_Level=value;
}
}
///<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>
publicUserDetailWebPart()
{
this.ListName=TheListName;
this.Dept=Constants.DEFAULT_USERDEPT_USERDETAIL;
this.Level=Constants.DEFAULT_USERLEVEL_USERDETAIL;
}
#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_userdetailusercontrol_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;
}
///<summary>
///ReloadWebpart
///</summary>
publicvoidReLoadWebPart()
{
if(_userControl!=null)
{
this.Controls.Remove(_userControl);
this.AddControlToWebPart();
}
}
///<summary>
///CreateEditorParts-Overridetodeclareourowneditorpart
///</summary>
///<returns></returns>
publicoverrideEditorPartCollectionCreateEditorParts()
{
ArrayListeditorPartArray=newArrayList();
UserDetailEditWebParteditorPart=newUserDetailEditWebPart();
editorPart.ID=this.ID+"_editorPart";
editorPartArray.Add(editorPart);
returnnewEditorPartCollection(editorPartArray);
}
#endregion
}
}
加入我们站点后,结果如下所示:
注意
关键是如下代码和editorPart关联起来了,重载了CreateEditorParts方法。
///<summary>
///CreateEditorParts-Overridetodeclareourowneditorpart
///</summary>
///<returns></returns>
publicoverrideEditorPartCollectionCreateEditorParts()
{
ArrayListeditorPartArray=newArrayList();
UserDetailEditWebParteditorPart=newUserDetailEditWebPart();
editorPart.ID=this.ID+"_editorPart";
editorPartArray.Add(editorPart);
returnnewEditorPartCollection(editorPartArray);
}
接着我们新建UserDetailEditWebPart.cs
代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Web.UI.WebControls;
usingMicrosoft.SharePoint;
usingSystem.Web.UI.WebControls.WebParts;
usingLearnWriteWebPart.Util;
usingLearnWriteWebPart.Interface;
namespaceLearnWriteWebPart.Webpart
{
publicclassUserDetailEditWebPart:EditorPart
{
privateDropDownListddlUserDept;
privateDropDownListddlUserLevel;
publicoverrideboolApplyChanges()
{
try
{
UserDetailWebPartuserDetailWebPart=this.WebPartToEditasUserDetailWebPart;
if(userDetailWebPart!=null)
{
userDetailWebPart.Dept=ddlUserDept.SelectedValue;
userDetailWebPart.Level=ddlUserLevel.SelectedValue;
userDetailWebPart.ReLoadWebPart();
}
returntrue;
}
catch
{
returnfalse;
}
}
publicoverridevoidSyncChanges()
{
this.EnsureChildControls();
//GetareferencetotheCommentsEditorPartwebpartweareediting
UserDetailWebPartuserDetailWebPart=this.WebPartToEditasUserDetailWebPart;
if(userDetailWebPart!=null)
{
if(!string.IsNullOrEmpty(userDetailWebPart.Dept))
ddlUserDept.SelectedValue=userDetailWebPart.Dept;
if(!string.IsNullOrEmpty(userDetailWebPart.Level))
ddlUserLevel.SelectedValue=userDetailWebPart.Level;
}
}
///<summary>
///Createdropdownlistforannoucementtype
///</summary>
protectedoverridevoidCreateChildControls()
{
base.CreateChildControls();
this.Title=Constants.LISTNAME_USERDETAIL;
BindDept();
BindLevel();
this.Controls.Add(CreateLiteral("部门<br/>"));
this.Controls.Add(ddlUserDept);
this.Controls.Add(CreateLiteral("级别<br/>"));
this.Controls.Add(ddlUserLevel);
}
privatevoidBindDept()
{
ddlUserDept=newDropDownList();
List<ListItem>listItem=newList<ListItem>();
listItem.Add(newListItem("HRDept","HRDept"));
listItem.Add(newListItem("FIDept","FIDept"));
listItem.Add(newListItem("ITDept","ITDept"));
ddlUserDept.DataSource=listItem;
ddlUserDept.DataBind();
}
privatevoidBindLevel()
{
ddlUserLevel=newDropDownList();
List<ListItem>listItem=newList<ListItem>();
listItem.Add(newListItem("Primary","Primary"));
listItem.Add(newListItem("Intermediate","Intermediate"));
listItem.Add(newListItem("Senior","Senior"));
ddlUserLevel.DataSource=listItem;
ddlUserLevel.DataBind();
}
///<summary>
///
///</summary>
///<paramname="text"></param>
///<returns></returns>
privateLiteralCreateLiteral(stringtext)
{
Literallit=newLiteral();
lit.Text=text;
returnlit;
}
}
}
关键还是重载了ApplyChanges()和SyncChanges()这两个方法.加上去,点击ModifySharedWepPart后显示的结果如我们上图所示.
接下来讲解sharepointTimeJob的开发。
System.Web.UI.WebControls.WebParts,并让这个类继承EditorPart类,并实现它的两个方法ApplyChanges和SyncChanges,简单描述:
ApplyChanges:是由配置界面向WebPart传值;
SyncChanges:是由WebPart向配置界面传值。
就是实现如下图的效果:
在我们定制的用户祥细信息webpart点击modifysharedwebpart的显示界面上显示我们定制的用户祥细信息,显所的部门和级别.
代码设计:
新建用户祥细信息webpart的usercontrol设计,新建UserDetailUserControl.ascx:
page设计:
UserDetailUserControl.ascx.cs的代码设计:
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;
usingLearnWriteWebPart.Interface;
publicpartialclassWebUserControl_UserDetailUserControl:System.Web.UI.UserControl
{
privatestringparmKeyItemId="ItemID";
///<summary>
///ThepropertythatholdsItemid.
///</summary>
privateintItemId
{
get
{
if(Request[this.parmKeyItemId]!=null)
returnConvert.ToInt32(Request[this.parmKeyItemId].ToString());
elsereturnConstants.USERDETAIL_ID_DEFAULT;
}
}
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!IsPostBack)
{
BindData();
}
}
privatevoidBindData()
{
UserBObo=newUserBO();
UserBEuser=bo.GetUserByID(ItemId);
lblUserName.Text=user.UserAccount;
lblUserAge.Text=user.Age;
lblUserSex.Text=user.Sex;
lblUserCity.Text=user.City;
}
}
webpart代码的设计:
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Xml.Serialization;
usingSystem.Web.UI;
usingLearnWriteWebPart.Util;
usingLearnWriteWebPart.Interface;
usingSystem.Collections;
usingSystem.ComponentModel;
usingMicrosoft.SharePoint.WebPartPages;
namespaceLearnWriteWebPart.Webpart
{
[ToolboxData("<{0}:UserDetailWebPartrunat=server></{0}:UserDetailWebPart>")]
[XmlRoot(Namespace="LearnWriteWebPart.Webpart")]
publicclassUserDetailWebPart:System.Web.UI.WebControls.WebParts.WebPart,IUserGroup
{
#region[PrivateVariable]
privatestring_ListName=string.Empty;
privatestring_Url=string.Empty;
privatestringTheListName=Constants.LISTNAME_USERDETAIL;
privateUserControl_userControl;
privatestring_Dept;
privatestring_Level;
#endregion
#region[CustomProperties]
///<summary>
///Thepropertythatholdshowmanyrowswillberetrieved
///</summary>
[WebBrowsable(false),
Personalizable(true)]
publicstringDept
{
get
{
return_Dept;
}
set
{
_Dept=value;
}
}
///<summary>
///Thepropertythatholdshowmanyrowswillberetrieved
///</summary>
[WebBrowsable(false),
Personalizable(true)]
publicstringLevel
{
get
{
return_Level;
}
set
{
_Level=value;
}
}
///<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>
publicUserDetailWebPart()
{
this.ListName=TheListName;
this.Dept=Constants.DEFAULT_USERDEPT_USERDETAIL;
this.Level=Constants.DEFAULT_USERLEVEL_USERDETAIL;
}
#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_userdetailusercontrol_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;
}
///<summary>
///ReloadWebpart
///</summary>
publicvoidReLoadWebPart()
{
if(_userControl!=null)
{
this.Controls.Remove(_userControl);
this.AddControlToWebPart();
}
}
///<summary>
///CreateEditorParts-Overridetodeclareourowneditorpart
///</summary>
///<returns></returns>
publicoverrideEditorPartCollectionCreateEditorParts()
{
ArrayListeditorPartArray=newArrayList();
UserDetailEditWebParteditorPart=newUserDetailEditWebPart();
editorPart.ID=this.ID+"_editorPart";
editorPartArray.Add(editorPart);
returnnewEditorPartCollection(editorPartArray);
}
#endregion
}
}
加入我们站点后,结果如下所示:
注意
关键是如下代码和editorPart关联起来了,重载了CreateEditorParts方法。
///CreateEditorParts-Overridetodeclareourowneditorpart
///</summary>
///<returns></returns>
publicoverrideEditorPartCollectionCreateEditorParts()
{
ArrayListeditorPartArray=newArrayList();
UserDetailEditWebParteditorPart=newUserDetailEditWebPart();
editorPart.ID=this.ID+"_editorPart";
editorPartArray.Add(editorPart);
returnnewEditorPartCollection(editorPartArray);
}
接着我们新建UserDetailEditWebPart.cs
代码如下:
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Web.UI.WebControls;
usingMicrosoft.SharePoint;
usingSystem.Web.UI.WebControls.WebParts;
usingLearnWriteWebPart.Util;
usingLearnWriteWebPart.Interface;
namespaceLearnWriteWebPart.Webpart
{
publicclassUserDetailEditWebPart:EditorPart
{
privateDropDownListddlUserDept;
privateDropDownListddlUserLevel;
publicoverrideboolApplyChanges()
{
try
{
UserDetailWebPartuserDetailWebPart=this.WebPartToEditasUserDetailWebPart;
if(userDetailWebPart!=null)
{
userDetailWebPart.Dept=ddlUserDept.SelectedValue;
userDetailWebPart.Level=ddlUserLevel.SelectedValue;
userDetailWebPart.ReLoadWebPart();
}
returntrue;
}
catch
{
returnfalse;
}
}
publicoverridevoidSyncChanges()
{
this.EnsureChildControls();
//GetareferencetotheCommentsEditorPartwebpartweareediting
UserDetailWebPartuserDetailWebPart=this.WebPartToEditasUserDetailWebPart;
if(userDetailWebPart!=null)
{
if(!string.IsNullOrEmpty(userDetailWebPart.Dept))
ddlUserDept.SelectedValue=userDetailWebPart.Dept;
if(!string.IsNullOrEmpty(userDetailWebPart.Level))
ddlUserLevel.SelectedValue=userDetailWebPart.Level;
}
}
///<summary>
///Createdropdownlistforannoucementtype
///</summary>
protectedoverridevoidCreateChildControls()
{
base.CreateChildControls();
this.Title=Constants.LISTNAME_USERDETAIL;
BindDept();
BindLevel();
this.Controls.Add(CreateLiteral("部门<br/>"));
this.Controls.Add(ddlUserDept);
this.Controls.Add(CreateLiteral("级别<br/>"));
this.Controls.Add(ddlUserLevel);
}
privatevoidBindDept()
{
ddlUserDept=newDropDownList();
List<ListItem>listItem=newList<ListItem>();
listItem.Add(newListItem("HRDept","HRDept"));
listItem.Add(newListItem("FIDept","FIDept"));
listItem.Add(newListItem("ITDept","ITDept"));
ddlUserDept.DataSource=listItem;
ddlUserDept.DataBind();
}
privatevoidBindLevel()
{
ddlUserLevel=newDropDownList();
List<ListItem>listItem=newList<ListItem>();
listItem.Add(newListItem("Primary","Primary"));
listItem.Add(newListItem("Intermediate","Intermediate"));
listItem.Add(newListItem("Senior","Senior"));
ddlUserLevel.DataSource=listItem;
ddlUserLevel.DataBind();
}
///<summary>
///
///</summary>
///<paramname="text"></param>
///<returns></returns>
privateLiteralCreateLiteral(stringtext)
{
Literallit=newLiteral();
lit.Text=text;
returnlit;
}
}
}
关键还是重载了ApplyChanges()和SyncChanges()这两个方法.加上去,点击ModifySharedWepPart后显示的结果如我们上图所示.
接下来讲解sharepointTimeJob的开发。
相关文章推荐
- 步步为营 SharePoint 开发学习笔记系列 一、简介
- 步步为营 SharePoint 开发学习笔记系列 四、创建sub site和创建list
- 【转】步步为营 SharePoint 开发学习笔记系列总结
- 步步为营 SharePoint 开发学习笔记系列 五、Web Part开发
- 步步为营 SharePoint 开发学习笔记系列 七、SharePoint Timer Job 开发
- 步步为营 SharePoint 开发学习笔记系列 四、创建sub site和创建list
- 步步为营 SharePoint 开发学习笔记系列 五、Web Part开发
- 步步为营 SharePoint 开发学习笔记系列 十、SharePoint web service 开发(下)
- 步步为营 SharePoint 开发学习笔记系列总结
- 步步为营 SharePoint 开发学习笔记系列 八、SharePoint EventHandler开发
- 步步为营 SharePoint 开发学习笔记系列 九、SharePoint web service 开发(上)
- 步步为营 SharePoint 开发学习笔记系列总结
- 步步为营 SharePoint 开发学习笔记系列 九、SharePoint web service 开发(上)
- 步步为营 SharePoint 开发学习笔记系列 八、SharePoint EventHandler开发
- 步步为营 SharePoint 开发学习笔记系列 一、简介
- 步步为营 SharePoint 开发学习笔记系列 十、SharePoint web service 开发(下)
- 步步为营 SharePoint 开发学习笔记系列 二、安装和配置
- 步步为营 SharePoint 开发学习笔记系列[转]
- 步步为营 SharePoint 开发学习笔记系列总结(转)
- 步步为营 SharePoint 开发学习笔记系列总结