2013-10-10 3 views
4

Lorsque je tente d'obtenir l'ID de:Quel est le meilleur moyen d'obtenir l'ID de la valeur du champ de recherche par programme?

string idValue = item[Lookup].ToString(); 

-je obtenir la valeur suivante par exemple:

1; # 1

J'ai besoin de la valeur de cette façon:

En fait, ce code gérer l'exigence:

using (SPSite site = new SPSite(context.CurrentWebUrl)) 
{ 
    using (SPWeb web = site.OpenWeb()) 
    { 
     //Context list     
     SPList list = web.Lists[context.ListId]; 
     SPList child = web.Lists[List]; 
     SPListItem currentItem = list.GetItemById(context.ItemId); 
     string updateItems = ""; 
     int ID = currentItem.ID; 

     foreach (SPListItem item in child.Items) 
     { 
      string idValue = item[Lookup].ToString(); 
      int partial = idValue.LastIndexOf(";"); 
      string idPure = idValue.Substring(0, partial); 

      if (idPure == ID.ToString()) 
      { 
       item[Field] = Value; 
       item.Update(); 
       updateItems += item.ID.ToString(); 
      } 
     }    

     //Return Items*/ 
     results["Items"] = updateItems; 
     SPWorkflow.CreateHistoryEvent(web, context.WorkflowInstanceId, 0, 
      web.CurrentUser, TimeSpan.Zero, "Information", 
      "Event from sandboxed, updates: " + updateItems, string.Empty); 
    } 
} 

Je veux savoir une meilleure fonction ou propriété pour obtenir l'ID du champ recherche.

+0

valeur Split "; #" et prendre la première partie –

+0

Ce également utile [et ECRIRE une des valeurs de champ de recherche SharePoint à l'aide SSOM C#] (https: //social.technet.microsoft.com/wiki/contents/articles/40271.get-and-set-a-sharepoint-lookup-field-values-using-ssom-c.aspx) –

Répondre

17
SPFieldLookupValue fieldLookupValue = new SPFieldLookupValue(item["FieldName"].ToString()); 
int lookupID = fieldLookupValue.LookupId; 

Ici, vous allez :)

0
SPList mySPList = oWeb.Lists["ProjectList"]; 
newItem["LookupFieldName"] = new SPFieldLookupValue(getLookUp(mySPList,LookupFieldValue), LookupFieldValue); 



public static int getLookUp(SPList oList, string FieldValue, string sFieldName="Title") 
     { 

      foreach (SPListItem spi in oList.GetItems()) 
      { 
       if (spi[sFieldName].ToString() == FieldValue) 
       { 
        return spi.ID; 
       } 
      } 
      return 0; 
     } 
+0

pourriez-vous s'il vous plaît élaborer et expliquer comment/pourquoi c'est un meilleur moyen que ce qui était déjà posté? –

Questions connexes