How to use People Picker control in edit web part Properties?
First Create a "Empty SharePoint Project". Add New "Web Part" named "TestWebpart". Create a new webpart property in this, as shown below.
private string _ImpersonateUser = null;
[Personalizable(PersonalizationScope.Shared)]
[WebBrowsable(false)]
[System.ComponentModel.Category("Custom Properties")]
[WebDisplayName("Impersonate User")]
[WebDescription("User for impersonation")]
public string ImpersonateUser
{
get
{
return _ImpersonateUser;
}
set
{
_ImpersonateUser = value;
}
}
Leave this as it is, we will come back to this again.
Add new class named "PeoplePickerEditor.cs" to this project. Your class should look like:
namespace SP.Anmol.Customization
{
public class PeoplePickerEditor: EditorPart
{
private PeopleEditor _peoplePicker;
public PeoplePickerEditor(string webPartID)
{
this.ID = "PeoplePickerEditor" + webPartID;
this.Title = "Impersonate User";
}
protected override void CreateChildControls()
{
_peoplePicker = new PeopleEditor();
_peoplePicker.ID = "pe1";
_peoplePicker.AllowTypeIn = true;
_peoplePicker.AllowEmpty = false;
_peoplePicker.MultiSelect = false;
_peoplePicker.Width = Unit.Pixel(250);
_peoplePicker.SelectionSet = PeopleEditor.AccountType.User.ToString();
Controls.Add(_peoplePicker);
}
public override bool ApplyChanges()
{
EnsureChildControls();
TestWebpart.TestWebpart webPart = WebPartToEdit as TestWebpart.TestWebpart;
if (webPart != null)
{
//set value of web part property
webPart.ImpersonateUser = _peoplePicker.CommaSeparatedAccounts;
}
return true;
}
public override void SyncChanges()
{
EnsureChildControls();
TestWebpart.TestWebpart webPart = WebPartToEdit as TestWebpart.TestWebpart;
if (webPart != null)
{
//set value back to people picker control
_peoplePicker.CommaSeparatedAccounts = webPart.ImpersonateUser;
}
}
}
}
Now get back to web part code file. Implement the interface IWebEditable. Your web part code looks like:
namespace SP.Anmol.TestWebpart
{
[Guid("84B6AF3B-9BA4-440A-AA4A-9657A5D67798")]
public class TestWebpart : Microsoft.SharePoint.WebPartPages.WebPart, IWebEditable
{
public AnonymousUpload()
{
this.ExportMode = WebPartExportMode.All;
}
private string _ImpersonateUser = null;
[Personalizable(PersonalizationScope.Shared)]
[WebBrowsable(false)]
[System.ComponentModel.Category("Custom Properties")]
[WebDisplayName("Impersonate User")]
[WebDescription("User for impersonation")]
public string ImpersonateUser
{
get
{
return _ImpersonateUser;
}
set
{
_ImpersonateUser = value;
}
}
protected override void CreateChildControls()
{
//Place your logic here
}
//Methods to be implement for interface IWebEditable EditorPartCollection IWebEditable.CreateEditorParts()
{
List<EditorPart> editors = new List<EditorPart>();
editors.Add(new PeoplePickerEditor(this.ID));
return new EditorPartCollection(editors);
}
object IWebEditable.WebBrowsableObject
{
get { return this; }
}
}
}
First Create a "Empty SharePoint Project". Add New "Web Part" named "TestWebpart". Create a new webpart property in this, as shown below.
private string _ImpersonateUser = null;
[Personalizable(PersonalizationScope.Shared)]
[WebBrowsable(false)]
[System.ComponentModel.Category("Custom Properties")]
[WebDisplayName("Impersonate User")]
[WebDescription("User for impersonation")]
public string ImpersonateUser
{
get
{
return _ImpersonateUser;
}
set
{
_ImpersonateUser = value;
}
}
Leave this as it is, we will come back to this again.
Add new class named "PeoplePickerEditor.cs" to this project. Your class should look like:
namespace SP.Anmol.Customization
{
public class PeoplePickerEditor: EditorPart
{
private PeopleEditor _peoplePicker;
public PeoplePickerEditor(string webPartID)
{
this.ID = "PeoplePickerEditor" + webPartID;
this.Title = "Impersonate User";
}
protected override void CreateChildControls()
{
_peoplePicker = new PeopleEditor();
_peoplePicker.ID = "pe1";
_peoplePicker.AllowTypeIn = true;
_peoplePicker.AllowEmpty = false;
_peoplePicker.MultiSelect = false;
_peoplePicker.Width = Unit.Pixel(250);
_peoplePicker.SelectionSet = PeopleEditor.AccountType.User.ToString();
Controls.Add(_peoplePicker);
}
public override bool ApplyChanges()
{
EnsureChildControls();
TestWebpart.TestWebpart webPart = WebPartToEdit as TestWebpart.TestWebpart;
if (webPart != null)
{
//set value of web part property
webPart.ImpersonateUser = _peoplePicker.CommaSeparatedAccounts;
}
return true;
}
public override void SyncChanges()
{
EnsureChildControls();
TestWebpart.TestWebpart webPart = WebPartToEdit as TestWebpart.TestWebpart;
if (webPart != null)
{
//set value back to people picker control
_peoplePicker.CommaSeparatedAccounts = webPart.ImpersonateUser;
}
}
}
}
Now get back to web part code file. Implement the interface IWebEditable. Your web part code looks like:
namespace SP.Anmol.TestWebpart
{
[Guid("84B6AF3B-9BA4-440A-AA4A-9657A5D67798")]
public class TestWebpart : Microsoft.SharePoint.WebPartPages.WebPart, IWebEditable
{
public AnonymousUpload()
{
this.ExportMode = WebPartExportMode.All;
}
private string _ImpersonateUser = null;
[Personalizable(PersonalizationScope.Shared)]
[WebBrowsable(false)]
[System.ComponentModel.Category("Custom Properties")]
[WebDisplayName("Impersonate User")]
[WebDescription("User for impersonation")]
public string ImpersonateUser
{
get
{
return _ImpersonateUser;
}
set
{
_ImpersonateUser = value;
}
}
protected override void CreateChildControls()
{
//Place your logic here
}
//Methods to be implement for interface IWebEditable EditorPartCollection IWebEditable.CreateEditorParts()
{
List<EditorPart> editors = new List<EditorPart>();
editors.Add(new PeoplePickerEditor(this.ID));
return new EditorPartCollection(editors);
}
object IWebEditable.WebBrowsableObject
{
get { return this; }
}
}
}
No comments:
Post a Comment