SharePoint 2010 SPFieldLookup,SPFieldChoice更新值方法

经过多番努力终于搞定SPFieldLookup,SPFieldChoice字段在Item中 如何更新值了,记下以备后用!

///////////////////////////////////

#region

 

//public method

 

///

<summary>

 

///

Returns the SPFieldLookupValue instance of a lookup value.

 

///

The ID value will be obtained using SPQuery.

 

///

</summary>

 

///

<param name="_web"></param>

 

///

<param name="_field"></param>

 

///

<param name="_lookupvalue"></param>

 

///

<returns></returns>

 

public SPFieldLookupValue GetLookupValue(SPWeb _web, SPFieldLookup _field, string

_lookupvalue)

{

 

string

queryFormat =

 

@"<Where>

<Eq><FieldRef Name='{0}'><Value Type='Text'>{1}</Eq>

</Where>"

 

;

 

string queryText = string

.Format(queryFormat, _field, _lookupvalue);

 

SPList lookupList = _web.Lists[new Guid

(_field.LookupList)];

 

SPListItemCollection

lookupItems =

lookupList.GetItems(

new SPQuery

if

(lookupItems.Count > 0)

{

 

int lookupId = Convert.ToInt32(lookupItems[0][SPBuiltInFieldId

.ID]);

 

return new SPFieldLookupValue

(lookupId, _lookupvalue);

}

 

else

{

 

return null

;

}

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

public void SetFieldValueLookup(SPListItem _item, string _fieldname, string

_lookupValue)

{

 

 

if (_item != null

)

{

 

 

SPFieldLookup field = _item.Fields.GetFieldByInternalName(_fieldname) as SPFieldLookup

;

_item[_fieldname] = GetLookupValue(_item.Web, field, _lookupValue);

_item.Update();

}

 

 

else

{

_item[_fieldname] =

 

null

;

}

}

 

 

///

<summary>

 

 

///

Set the values of a Lookup-Field with multiple values allowed.

 

 

///

</summary>

 

 

public void SetFieldValueLookup(SPListItem

_item,

 

 

string _fieldName, IEnumerable<string

> _lookupValues)

{

 

 

if (_item != null

)

{

 

 

SPFieldLookup

field =

_item.Fields.GetFieldByInternalName(_fieldName)

 

as SPFieldLookup

;

 

 

SPFieldLookupValueCollection

fieldValues =

 

 

new SPFieldLookupValueCollection

();

 

 

foreach (string lookupValue in

_lookupValues)

{

fieldValues.Add(

GetLookupValue(_item.Web, field, lookupValue));

}

_item[_fieldName] = fieldValues;

_item.Update();

}

}

 

 

public void SetFieldValueChoice(SPListItem _item, string _fieldname, string

_choiseValue)

{

 

SPFieldChoice statusField = _item.Fields.GetFieldByInternalName(_fieldname) as SPFieldChoice

;

_item[statusField.Id] = statusField.Choices[statusField.Choices.IndexOf(_choiseValue)];

_item.Update();

}

 

 

() { Query = queryText });

 

posted on 2010-11-05 15:04  张大明  阅读(756)  评论(0编辑  收藏  举报

导航