Forum Discussion

Dennis Kuhn's avatar
Dennis Kuhn
Copper Contributor
Jul 15, 2017
Solved

How to set a people field in a list, e.g. “convert” AccountName to Lookup ID?

I am trying to build an SPFX WebPart with React Office UI Fabric. I have a SharePoint list with a People field called AssignedTo. The lookup ID values are like 12, 20, and so on. When I select a pers...
  • Dennis Kuhn's avatar
    Jul 16, 2017

    A call to `api/web/ensureuser` using the SPHttpClient is needed. It ensures the requested user is loaded into the SharePoint site userinfo. Using the given `AccountName` like `i:0#.f|membership|bob@somewhere.org.nz` from the search as parameter. The returned SPUser contains the `Id` field for the Lookup column.

     

    I implemented the following method:

      public EnsureUser(userName: string): Promise<ISPUser> {
        console.log("SharePointDataProvider.EnsureUser( \"" + userName + "\" )");
        var data = {logonName: userName};
    
        return this._webPartContext.spHttpClient.post(
          this._ensureUserUrl, 
          SPHttpClient.configurations.v1,
          { body: JSON.stringify(data) } ).then(
            (value: SPHttpClientResponse) => {
              console.log("SharePointDataProvider.EnsureUser FullFill: statusText:\"" + value.statusText + "\"" );
              return value.json();
            },
            (error: any) => console.log("SharePointDataProvider.EnsureUser Rejected: " + error )
          ).then((json: ISPUser) => {
              console.log("SharePointDataProvider.EnsureUser FullFill: Id:" + json.Id +" LoginName:\"" + json.LoginName + "\"" );
            return json;
          });
      }

    My mini ISPUser interface:

    interface ISPUser
    {
        Email: string;
        Id: number;
        LoginName: string;
        Title: string;
    }

Resources