using System;
using System.Globalization;
using Microsoft.SharePoint;
namespace SharePoint2007Base {
/// <summary>
/// The ItemUtility class contains some extension methods which help to retrieve values from fields
/// </summary>
public static class ItemUtility {
private static object GetFieldValue(this SPItem item, string fieldName) {
if (item == null) {
throw new ArgumentNullException("item");
}
if (string.IsNullOrEmpty(fieldName)) {
throw new ArgumentNullException("fieldName");
}
object retVal = null;
if (item.Fields.ContainsField(fieldName)) {
retVal = item[fieldName];
}
return retVal;
}
/// <summary>
/// Gets the value.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="item">The item.</param>
/// <param name="fieldName">Name of the field.</param>
/// <param name="defaultValue">The default value.</param>
/// <returns></returns>
public static T GetValue<T>(this SPItem item, string fieldName, T defaultValue) {
T retVal = defaultValue;
object fieldValue = item.GetFieldValue(fieldName);
if (fieldValue != null) {
retVal = (T)Convert.ChangeType(fieldValue, typeof(T), CultureInfo.InvariantCulture);
}
return retVal;
}
/// <summary>
/// Gets the lookup field value.
/// </summary>
/// <param name="item">The item.</param>
/// <param name="fieldName">Name of the field.</param>
/// <returns></returns>
public static SPFieldLookupValue GetLookupFieldValue(this SPItem item, string fieldName) {
SPFieldLookupValue retVal = null;
object fieldValue = item.GetFieldValue(fieldName);
if (fieldValue != null) {
retVal = fieldValue as SPFieldLookupValue;
}
return retVal;
}
/// <summary>
/// Gets the lookup field value collection.
/// </summary>
/// <param name="item">The item.</param>
/// <param name="fieldName">Name of the field.</param>
/// <returns></returns>
public static SPFieldLookupValueCollection GetLookupFieldValueCollection(this SPItem item, string fieldName) {
SPFieldLookupValueCollection retVal = new SPFieldLookupValueCollection();
object fieldValue = item.GetFieldValue(fieldName);
if (fieldValue != null) {
retVal = fieldValue as SPFieldLookupValueCollection;
}
return retVal;
}
/// <summary>
/// Gets the multiple choice field value.
/// </summary>
/// <param name="item">The item.</param>
/// <param name="fieldName">Name of the field.</param>
/// <returns></returns>
public static SPFieldMultiChoiceValue GetMultipleChoiceFieldValue(this SPItem item, string fieldName) {
SPFieldMultiChoiceValue retVal = new SPFieldMultiChoiceValue();
string fieldValue = item.GetValue<string>(fieldName, null);
if (!string.IsNullOrEmpty(fieldValue)) {
retVal = new SPFieldMultiChoiceValue(fieldValue);
}
return retVal;
}
/// <summary>
/// Gets the URL field value.
/// </summary>
/// <param name="item">The item.</param>
/// <param name="fieldName">Name of the field.</param>
/// <returns></returns>
public static SPFieldUrlValue GetUrlFieldValue(this SPItem item, string fieldName) {
SPFieldUrlValue retVal = null;
string fieldValue = item.GetValue<string>(fieldName, null);
if (!string.IsNullOrEmpty(fieldValue)) {
retVal = new SPFieldUrlValue(fieldValue);
}
return retVal;
}
/// <summary>
/// Gets the user field value.
/// </summary>
/// <param name="item">The item.</param>
/// <param name="fieldName">Name of the field.</param>
/// <returns></returns>
public static SPFieldUserValue GetUserFieldValue(this SPItem item, string fieldName) {
SPFieldUserValue retVal = null;
string fieldValue = item.GetValue<string>(fieldName, null);
if (!string.IsNullOrEmpty(fieldValue)) {
SPFieldUser userField = item.Fields.GetField(fieldName) as SPFieldUser;
retVal = userField.GetFieldValue(fieldValue) as SPFieldUserValue;
}
return retVal;
}
/// <summary>
/// Gets the user field value collection.
/// </summary>
/// <param name="item">The item.</param>
/// <param name="fieldName">Name of the field.</param>
/// <returns></returns>
public static SPFieldUserValueCollection GetUserFieldValueCollection(this SPItem item, string fieldName) {
SPFieldUserValueCollection retVal = new SPFieldUserValueCollection();
object fieldValue = item.GetFieldValue(fieldName);
if (fieldValue != null) {
retVal = fieldValue as SPFieldUserValueCollection;
}
return retVal;
}
}
}