您的位置:首页 > 其它

步步为营 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的开发。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: