SharePoint特殊字段处理

Lookup Field

Field Class: SPFieldLookup
Field Value Class: SPFieldLookupValue

Populating Information:
item["FieldName"] = new SPFieldLookupValue("Title"); // SharePoint will do the lookup as long as the LookupValue's are unique
item.Update();
//or
item["FieldName"] = new SPFieldLookupValue(1, "Title");
item.Update();

Retrieving Information:
SPFieldLookupValue itemValue = item["FieldName"] as SPFieldLookupValue;
int id = itemValue.LookupId;
string value = itemValue.LookupValue; 
 
Multiple Lookup Field

Field Class: SPFieldLookup
Field Value Class: SPFieldLookupValueCollection

Populating Information:
SPFieldLookupValueCollection itemValues = SPFieldLookupValueCollection();
itemValues.Add(new SPFieldLookupValue(1, "Title"));
item["FieldName"] = itemValues;
item.Update();

Retrieving Information:
SPFieldLookupValueCollection itemValues = item["FieldName"] as SPFieldLookupValueCollection;
foreach (SPFieldLookupValue itemValue in itemValues)
{
int id = itemValue.LookupId;
string value = itemValue.LookupValue;
}

Parent list id:
string fstr = properties.AfterProperties["MasterPlan"].ToString();
SPFieldLookupValue lv = new SPFieldLookupValue(fstr);
SPFieldLookup f = properties.List.Fields["MasterPlan"] as SPFieldLookup;
SPList parentList = properties.Web.Lists[new Guid(f.LookupList)];
SPListItem parentItem = parentList.GetItemById(lv.LookupId);

User Field

Field Class: SPFieldUser
Field Value Class: SPFieldUserValue

Populating Information:
web.EnsureUser(@"domain\username");
SPUser user = web.AllUsers[@"domain\username"];
item["FieldName"] = user;
item.Update(); 

Retrieving Information:
string currentValue = item["FieldName"].ToString();
SPFieldUser userField = list.Fields.GetFieldByInternalName("FieldName");
SPFieldUserValue itemValue = (SPFieldUserValue)userField.GetFieldValue(currentValue);
SPUser user = itemValue.User;

URL Field

Field Class: SPFieldUrl
Field Value Class: SPFieldUrlValue

Populating Information:
SPFieldUrlValue urlValue = new SPFieldUrlValue();
urlValue.Url = "http://www.google.com/";
urlValue.Description = "Google";
item["FieldName"] = urlValue;
item.Update();

Retrieving Information:
SPFieldUrlValue urlValue = new SPFieldUrlValue(item["FieldName"].ToString());
string url = urlValue.Url;
string description = urlValue.Description;

Multiple Choice Field

Field Class: SPFieldMultiChoice
Field Value Class: SPFieldMultiChoiceValue

Populating Information:
SPFieldMultiChoiceValue itemValue = new SPFieldMultiChoiceValue();
itemValue.Add("Choice 1");
itemValue.Add("Choice 2");
itemValue.Add("Choice 3");
item["FieldName"] = itemValue;
item.Update();

Retrieving Information:
SPFieldMultiChoiceValue itemValue = new SPFieldMultiChoiceValue(item["FieldName"].ToString());
foreach (string choice in itemValue)
{
// value is in choice
}

托管元数据字段

using (SPSite site = new SPSite(http://myUrl))  
{ using (SPWeb web = site.OpenWeb())
    {
      string tagsFieldName = "Tags";
      string myListName = "MyList";
      string myTermName = "myTerm";
      SPListItem myItem = web.Lists[myListName].GetItemById(1);
      TaxonomyField tagsField = (TaxonomyField) myList.Fields[tagsFieldName];
      TaxonomySession session = new TaxonomySession(site);
      TermStore termStore = session.TermStores[tagsField.SspId];
      TermSet termSet = termStore.GetTermSet(tagsField.TermSetId);
      Term myTerm = null;
      try
      {
myTerm = termSet.Terms[myTermName];
   }
   catch (ArgumentOutOfRangeException)
{ }
     string termString = String.Concat(myTerm.GetDefaultLabel(1033),TaxonomyField.TaxonomyGuidLabelDelimiter, myTerm.Id);
if (tagsField.AllowMultipleValues)
{
TaxonomyFieldValueCollection tagsValues = new TaxonomyFieldValueCollection(tagsField);
tagsValues.PopulateFromLabelGuidPairs(String.Join(TaxonomyField.TaxonomyMultipleTermDelimiter.ToString(),new[] { termString }));
myItem[tagsFieldName] = tagsValues;
}
else
{
TaxonomyFieldValue tagValue = new TaxonomyFieldValue(termString);
myItem[tagsFieldName] = tagValue;
} myItem.Update();
}
}
UserProfile获取
      using (SPSite site = new SPSite("http://kfc1/sites/FirstTestSite"))
      {
          SPServiceContext context =
            SPServiceContext.GetContext(site);
         UserProfileManager profileManager = new UserProfileManager(context);
         string sAccount = "free\\administrator";
         UserProfile u = profileManager.GetUserProfile(sAccount);
         foreach (var item in u.Properties)
         {
           Console.WriteLine(item.Name+":"+item.DisplayName);
         }
     }

出处: http://www.cnblogs.com/windy2008

原文地址:https://www.cnblogs.com/windy2008/p/1898820.html