0

I'm trying to set multiple values to lookup column. I can get it to set one value but multiple values don't work

see below

[Microsoft.SharePoint.SPFieldLookupValueCollection] $itemValues = New-Object Microsoft.SharePoint.SPFieldLookupValueCollection

[Microsoft.SharePoint.SPFieldLookupValue] $lookupvalue = New-Object Microsoft.SharePoint.SPFieldLookupValue

$lookupvalue.LookupId = 1

$lookupvalue.LookupId = 2

$itemValues.Add($lookupvalue)

$CMRSItems["Event Type"] = $itemValues
$CMRSItems.Update()

I was expecting the LookupID 1 and 2 to update but it doesn't. When i specify LookupId = 1 it works

What am i doing wrong.

Thanks in Advance

updating multivalues

$lookupvalue = GetLookUpValues -val $number
#Write-Host $lookupvalue 

[Microsoft.SharePoint.SPFieldLookupValueCollection] $itemValues = New-Object Microsoft.SharePoint.SPFieldLookupValueCollection
[Microsoft.SharePoint.SPFieldLookupValue] $lookupvalue = New-Object Microsoft.SharePoint.SPFieldLookupValue 


   #sample lookup values adding to collection: 
   #1;#Open
   #2;#Closed

$itemValues.Add($lookupvalue)

$CMRSItems["Event Type"] = $itemValues;
    $CMRSItems.Update();

Getting error : Exception calling "Update" with "0" argument(s): "Invalid look-up value

  • On your update: You create a collection, you add an object and assign the collection to the field. But nowhere do you set the LookupID on the object ;), which I think would be necessary. – Cameron Verhelst Mar 14 '14 at 9:15
1

You must create two objects of LookUpValue and add to the collection. Right now you are setting LookupID twice on the same object, overwriting the first assignment.

   [Microsoft.SharePoint.SPFieldLookupValueCollection] $itemValues = New-Object Microsoft.SharePoint.SPFieldLookupValueCollection

  [Microsoft.SharePoint.SPFieldLookupValue]    $lookupvalue = New-Object Microsoft.SharePoint.SPFieldLookupValue

  [Microsoft.SharePoint.SPFieldLookupValue]    $lookupvalue2 = New-Object Microsoft.SharePoint.SPFieldLookupValue

$lookupvalue.LookupId = 1

$lookupvalue2.LookupId = 2

 $itemValues.Add($lookupvalue)
 $itemValues.Add($lookupvalue2)

Also in your new example you seem to overwrite your $lookupvalue

$lookupvalue = GetLookUpValues -val $number
#Write-Host $lookupvalue 

[Microsoft.SharePoint.SPFieldLookupValueCollection] $itemValues = New-Object Microsoft.SharePoint.SPFieldLookupValueCollection
#[Microsoft.SharePoint.SPFieldLookupValue] $lookupvalue = New-Object Microsoft.SharePoint.SPFieldLookupValue #This row creates a new empty lookupvalue, overwriteing the one from line 1

$itemValues.Add($lookupvalue)

$CMRSItems["Event Type"] = $itemValues;
$CMRSItems.Update();
  • Thanks Rob just missed that..But when i try adding dynamic values to lookupid to update multi values i get an error. I'll post it soon – naijacoder Mar 14 '14 at 7:11
  • Robert I have added the code im using to update multi vakues to my original post.Thanks – naijacoder Mar 14 '14 at 7:16
  • Thanks Rob for the update.But its only updating the last value.I'm sending 3 values to update but only the last value is being updated.Any ideas – naijacoder Mar 16 '14 at 22:41
  • Also When i hard code the multivalues it works.:( – naijacoder Mar 16 '14 at 23:16
  • I do also get error:-Cannot convert value "Event Type" to type "System.Int32". Error: "Input string was not in a correct format." Some of the values im updating is sinple and some are mutli valued.Im sure i'm sending the right format – naijacoder Mar 16 '14 at 23:29
0

Add toString when updating the lookup field as shown below:

$CMRSItems["Event Type"] = $itemValues.ToString();

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.