2013-10-10 4 views
4

Когда я пытаюсь получить идентификатор из:Каков лучший способ получить идентификатор от значения поля поиска программно?

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

Я получаю следующее значение по примеру:

1; # 1

мне нужно значение следующим образом:

На самом деле этот код обработка требования:

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); 
    } 
} 

Я хочу знать, лучше функцию или свойство, чтобы получить идентификатор из поиска поля.

+0

Разделить значение на "; #" и первую часть –

+0

Это также полезно [Получить и установить значение Lookup полого SharePoint Использования SSOM C#] (https: //social.technet.microsoft.com/wiki/contents/articles/40271.get-and-set-a-sharepoint-lookup-field-values-using-ssom-c.aspx) –

ответ

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

Здесь вы идете :)

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

не могли бы вы рассказать и объяснить, как/почему это лучший способ, чем то, что уже было опубликовано? –

Смежные вопросы