2012-06-26 2 views
1

Я новичок в SharePoint и задаю общий вопрос о сравнении списка. В настоящее время существует список пользователей, который постоянно меняется, и я хотел собрать количественные данные об изменениях. Каждый день я приезжаю в 8:00, а затем выхожу снова в 5:00. Я хочу знать, что/сколько элементов находится в этом списке в 8:00 по сравнению с 5:00, а затем сможете просмотреть результаты. Например, список содержит текущие проекты, которые мне нужно закончить. Если есть 20, когда я прихожу в 8:00, и 3, когда я ухожу, я хочу иметь возможность просматривать данные, которые я выполнил 85% проектов и 17/20. Возможно ли это?Можно ли сравнивать один и тот же список Sharepoint дважды в день, ища изменения/подсчет изменений.

* Обратите внимание, что в настоящее время у меня нет SharePoint Designer или доступа к серверу. Предполагая, что доступ необходим, и я могу его получить, каким будет лучший способ приблизиться к этому?

ответ

1

Там действительно нет встроенного способа сделать это. Но со всеми вещами SharePoint существует множество способов добиться чего-то. Поскольку у вас нет доступа к SP Designer или самому серверу, вероятно, путь наименьшего сопротивления будет состоять в том, чтобы использовать веб-службы SP для запроса списка (например, в 8 утра) и получить количество элементов, сохранить (сохранить) item-count где-нибудь, затем запросите список снова (5PM) и проверьте его на счет начального дня и дайте вам общее количество.

Вы можете получить доступ к данным списка через веб-службы SP по адресу http://server_name/_vti_bin/Lists.asmx. Для получения списка используйте что-то вроде кода ниже. Вы можете сохранить хранимое значение в любом месте - текстовый файл, локальное хранилище, память.

Обратите внимание: вам нужно добавить ссылку на веб-службу в свой проект. В приведенном ниже коде это называется sp2010, но, очевидно, вы можете назвать все, что захотите. Переменная listItemCount будет содержать ваш список. Большая часть остальной части кода должна быть понятной.

  sp2010.Lists spList = new sp2010.Lists() { Credentials = new NetworkCredential("username", "password") }; 
      string listName = "YourListName"; 
      string listItemCount = string.Empty; 

      XmlNode listXML = spList.GetListItems(listName, null, null, null, null, null, null); 

      XmlDataDocument innerXml = new XmlDataDocument(); 
      innerXml.LoadXml(listXML.InnerXml); 
      XmlNodeList rows = innerXml.GetElementsByTagName("rs:data"); 

      foreach (XmlNode attribute in rows) 
       { 
        // listItemCount holds the count of your list 
        listItemCount = attribute.Attributes["ItemCount"].Value; 
       } 
+0

Спасибо! Я ценю ответ, который не требует аутентификации сервера. Я посмотрю на это и на следующей неделе. – Jonny

+0

Единственная проверка подлинности, в которой вы нуждаетесь, - это ваши обычные учетные данные, необходимые для просмотра списка - ничего больше. И поскольку он попадает в веб-службы, вам не нужно ничего устанавливать на локальном сервере. –

+0

На каком языке этот код? C/Java? и с чего я запускаю программу? – Jonny

1

Timerjob может быть приличным вариантом. Это немного кодирование, которое просто поразило бы список, запрашивающий все элементы, и подсчет, а затем пинг электронной почты кому-либо или падение фигуры, которая возвращается где-то в SharePoint.

Кроме того, я бы прочитал около http://www.andrewconnell.com/blog/articles/CreatingCustomSharePointTimerJobs.aspx блог для информации о том, как закодировать задание таймера.

Чтобы получить то, что вам нужно, я расскажу вам, что вам нужно сделать, но не даст вам код, как вы должны сначала попытаться, прежде чем спрашивать.

Получить объект spsite. (Это должно содержать веб-страницу, содержащую ваш список) Получить веб-объект, содержащий ваш список. Получить список

SPList countLIst = <yourWeb>.lists["<listname or GUID>"] 

Получить количество списка

int numberOfItems = countList.items.count 

как-то отобразить или сохранить numberOfItems

Помните SPContext.current.site не будет работать в пределах заданий таймера из-за их контекст.

Надеется, что это расширение выполняет ваш запрос

Приветствию Truez

+0

Вы знаете, как этот код может выглядеть так? – Jonny

+0

Спасибо за обновление. Я буду смотреть в него. – Jonny

+0

Поскольку OP упомянул, что у него нет доступа к серверу, мы можем предположить, что решение, требующее библиотеки Sharepoint.dll (или установки решения, которое включает задание таймера), как вы предлагаете, на самом деле не будет его лучший выбор. –

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