SharePoint 2007. Проверка на наличие элемента в списке
Пример метода для проверки существования элемента списка в SharePoint
Что понадобиться
Ничего, кроме статического класса Helper'а, который наряду с нашим сегодняшним будет содержать другие полезные методы, т.е.:
namespace ZhukPoint.Portal2007.Helpers
{
public static class SPListHelper
{
…
}
}
Реализация
Сам метод будет принимать следующие параметры:
- siteId - Id сайта
- webId - Id узла, на котором располагается список;
- listId - Id списка, в котором мы будем искать элемент;
- uniqueId - UniqueId элемента (Guid). Можно использовать и int'овый Id. Суть от этого не меняется.
И собственно метод:
/// <summary>
/// Проверка на существование элемента в списке
/// </summary>
/// <param name="siteId">Id сайта</param>
/// <param name="webId">Id узла</param>
/// <param name="listId">Id списка</param>
/// <param name="uniqueId">Guid элемента</param>
/// <returns>Флаг наличия элемента</returns>
public static bool ItemExists(Guid siteId, Guid webId, Guid listId, Guid uniqueId)
{
// Флаг, по-умолчанию опущен
var res = false;
// Безопасность нас здесь не интересует
SPSecurity.RunWithElevatedPrivileges(delegate
{
// Берем сайт
using (var site = new SPSite(siteId))
{
// Открываем узел
using (var web = site.OpenWeb(webId))
{
// Создаем запрос
var query =
string.Format(
@"<Where>
<Eq>
<FieldRef Name='UniqueId' />
<Value Type='Lookup'>{0}</Value>
</Eq>
</Where>",
uniqueId);
// Получаем список
var list = web.Lists[listId];
// Выполняем запрос и считываем кол-во элементов в результате
res = list.GetItems(new SPQuery { Query = query }).Count > 0;
}
}
});
return res;
}
Здесь все предельно просто, мы просто выполняем CAML-запрос и смотрим кол-во элементов в результате. Для удобства метод можно упростить убрав из него параметры siteId и webId. Их можно брать из SPContext, т.е.:
/// <summary>
/// Проверка на наличие элемента в списке
/// </summary>
/// <param name="listId">Id списка</param>
/// <param name="uniqueId">Guid эелемента</param>
/// <returns>Флаг наличия элемента</returns>
public static bool ItemExists(Guid listId, Guid uniqueId)
{
var cntx = SPContext.Current;
var siteId = cntx.Site.ID;
var webId = cntx.Web.ID;
var flag = ItemExists(siteId, webId, listId, uniqueId);
return flag;
}
А использовать одно удовольствие, например:
if(SPListHelper.ItemExists(_listId, _itemUniqueId))
{
...
}