PeoplePicker的控件,网上的例子比较多,可是EntityEditorWithPicker的控件的例子,太少了。这次的项目中要用它来从 Userprofile中取数据,之前抠的sharepoint的js代码,但是不太完美。抽空研究了下这个控件,终于搞明白怎么使用了,贴出来共享。
PeoplePicker的控件,网上的例子比较多,可是EntityEditorWithPicker的控件的例子,太少了。这次的项目中要用它来从Userprofile中取数据,之前抠的sharepoint的js代码,但是不太完美。抽空研究了下这个控件,终于搞明白怎么使用了,贴出来共享。
1. 不用说第一步是往你的页面上拖控件,在
![](/Images/OutliningIndicators/ContractedBlock.gif)
Code
Microsoft.SharePoint.WebControls.EntityEditorWithPicker EntityEditorWithPicker_Skills
的下面,然后添加到toolbox中,拖到页面,如下
![](/Images/OutliningIndicators/ContractedBlock.gif)
Code
<wssawc:EntityEditorWithPicker Width="450px" ID="EntityEditorWithPicker_Skills" runat="server" />
2.给控件赋值,以userprofile中的skills为例,用GetEntity取出数据,然后使用控件的UpdateEntities把数据加到显示的文本框上。把下面的几个属性配置好后,页面上就能出来了。
![](/Images/OutliningIndicators/ContractedBlock.gif)
Code
EntityEditorWithPicker_Skills.UpdateEntities(GetEntity(Pu["SPS-Skills"]));
EntityEditorWithPicker_Skills.MultiSelect = true;
EntityEditorWithPicker_Skills.CustomProperty = "SPS-Skills";
EntityEditorWithPicker_Skills.DialogTitle = "Select Skills Values";
EntityEditorWithPicker_Skills.EntitySeparator = Convert.ToChar(",");
EntityEditorWithPicker_Skills.PickerDialogType = typeof(Microsoft.SharePoint.Portal.WebControls.ChoiceDialog);
![](/Images/OutliningIndicators/ContractedBlock.gif)
Code
public ArrayList GetEntity(UserProfileValueCollection uv)
{
ArrayList al = new ArrayList();
if (uv != null)
{
List<object> mylist = null;
mylist = (from s in uv.OfType<object>() select s).ToList<object>();
foreach (object obj in mylist)
{
PickerEntity entity = new PickerEntity();
entity.DisplayText = obj.ToString();
entity.Key = obj.ToString();
entity.IsResolved = true;
al.Add(entity);
}
}
return al;
}
![](https://pic002.cnblogs.com/img/geek007/200906/2009062216581227.jpg)
![](https://pic002.cnblogs.com/img/geek007/200906/2009062216591037.jpg)
3.基本属性的一些说明
EntityEditorWithPicker_Skills.UpdateEntities:定义好PickerEntity实体数据后,更新到控件,这个PickerEntity就是文本框中将要显示的,还可以使用
EntityEditorWithPicker_Skills.Entities.Add来添加PickerEntity
EntityEditorWithPicker_Skills.MultiSelect:是否允许多选,ture的话Dialog中下面就会有图中的Add框
EntityEditorWithPicker_Skills.CustomProperty = "SPS-Skills" ; 这个是定义数据来源的,当前使用的userprofile中的SPS-Skills.
EntityEditorWithPicker_Skills.PickerDialogType = typeof(Microsoft.SharePoint.Portal.WebControls.ChoiceDialog); 枚举的类型,根据需要选择
EntityEditorWithPicker_Skills.DialogTitle = "Select Skils Values";
这个一看就明白,定义弹出Dialog的一些属性,类似的还有EntityEditorWithPicker_Skills.CheckButtonImageName,EntityEditorWithPicker_Skills.BrowseButtonImageName 定义选择按钮和check按钮的图片url
EntityEditorWithPicker_Skills.EntitySeparator = Convert.ToChar(","); 分隔符
4.获取控件数据
![](/Images/OutliningIndicators/ContractedBlock.gif)
Code
object[] arrobj_skill = EntityEditorWithPicker_Skills.ResolvedEntities.ToArray();
u["SPS-Skills"].Clear();
foreach (PickerEntity pe in arrobj_skill)
{
u["SPS-Skills"].Add((object)pe.Key);
}