This project has moved. For the latest updates, please go here.

PeoplePicker Sharepoint 2013

Aug 13, 2013 at 9:23 AM
Edited Aug 13, 2013 at 9:24 AM
Hello Kit,

My Problem:
I can't fill a PeoplePickerField automatically in SharePoint 2013.

Maybe a solution:
I found in your "SPUtility.js" the following:

on Line 790
var controls = this.Controls.select('span.ms-usereditor');
        if (null !== controls && 1 === controls.length) {
            this.spanUserField = controls[0];
            this.upLevelDiv = $(this.spanUserField.id + '_upLevelDiv');
                                                      ...
The first argument doesn't work correctly because "controls[0]" is "null".
And so the "this.upLevelDiv" is also "null". (but we need this to write the value in the PeoplePickerField "this.upLevelDiv.innerHTML = value" on Line 811)

I hope you have a solution for me.
Thanks!

Best Regards,
Andreas

->MY Code:
<script src="/Style%20Library/prototype.js" type="text/javascript"></script>
<script src="/Style%20Library/SPUtility.js" type="text/javascript"></script>
<script type="text/javascript">

Event.observe(window,'load',function()
{ 
  try 
  { 
    SPUtility.GetSPField('MyField').SetValue('Lastname Firstname').MakeReadOnly();
  } 
  catch (ex) {} 
});

</script>
Aug 14, 2013 at 6:31 AM
EDIT:

with SPUtility.Debug(true); I get the error Message:
GetSPField: Unable to find a SPField named Title
I get this error on every field. Is this a Problem with SharePoint 2013 ?
Coordinator
Aug 14, 2013 at 2:40 PM
Andreas,
Thanks for reporting this. I recently got access to a 2013 environment and was able to reproduce this error there.

I'm going to see if I can implement a fix.
Thanks,
Kit
Coordinator
Aug 16, 2013 at 9:34 PM
Andreas,
I wanted to give you a quick update on what I've found out so far.

First, I am sorry to report that SPUtility, as it is now, will NOT work with SharePoint 2013. Prototype.js breaks out of the box SP2013 functionality (unrelated to people fields or really even SPUtility.js).

Second, I have been working (slowly) on a jQuery version of SPUtility.js in an effort to get rid of prototype.js. jQuery works fine in SharePoint 2013. It is my plan to discontinue this version once I have the jQuery version working.

Third, people fields in SharePoint 2013 are much, much different than they were in 2007 and 2010. It should be possible to manipulate these fields but I have a lot of Microsoft's code to read. :)
Thanks,
Kit
Aug 26, 2013 at 11:48 AM
Kit,

I've found a Little Workaround. I hope i won't need it any longer... ;)

1) Set a SP-Textfield with current user
<script language="javascript" src="/Style%20Library/kcs/js/jquery-1.10.2.min.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">

//Load Document - wait
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', setPicker);

function setPicker() 
{
  //Read current user
  var ctx = SP.ClientContext.get_current(),
      web = ctx.get_web(),
      currentUser = web.get_currentUser();

  ctx.load(currentUser);
  ctx.executeQueryAsync(function () 
      {
        $("td.ms-formbody").each(function () 
        {
          //Insert Current user into field "SPFIELD"
          $("input[title='SPFIELD']").val(currentUser.get_title());       
        });
      }, function (sender, args) 
        {
        alert("ERROR: " + args.get_message());
        });
}
</script>
2) Use a SharePoint - Standard Workflow to set the People-Picker Field with the Content from the textfield.

There's just one Problem:
  • if the user edits the textfield - maybe PeoplePicker can't load the right Person.
Thank you, and have a succesful day/week!
Andreas