我是SharePoint新手,对列表比较有一般性问题。目前,有一个用户生成的列表不断变化,我想收集有关变化的定量数据。每天,我在8:00进来,然后在5:00再次离开。我想知道在8:00和5:00之间该列表中有多少项目,然后能够查看结果。例如,该列表包含我需要完成的当前项目。如果我在8:00进入时有20,而当我离开时有3,我希望能够查看我完成85%项目和17/20的数据。 这可能吗?
*请注意,目前,我没有SharePoint Designer或访问服务器。假设需要访问并且我可以获得它,那么最好的方法是什么?
答案 0 :(得分:1)
Timerjob可能是一个不错的选择。这是一些编码,只需点击列表查询所有项目并计算,然后ping一个电子邮件给某人或删除它返回到SharePoint的某个地方。
另外我会阅读http://www.andrewconnell.com/blog/articles/CreatingCustomSharePointTimerJobs.aspx 博客,了解如何编写计时器作业的信息。
要真正得到你需要的东西,我会告诉你你需要做什么,但是不会给你代码,因为你应该在问之前先尝试。
获取spsite对象。(这应包含包含您的列表的Web) 获取包含列表的Web对象。 获取列表
SPList countLIst = <yourWeb>.lists["<listname or GUID>"]
获取列表计数
int numberOfItems = countList.items.count
以某种方式显示或保存numberOfItems
请记住,由于上下文,SPContext.current.site在计时器作业中不起作用。
希望此扩展程序满足您的要求
干杯 Truez
答案 1 :(得分:1)
实际上没有内置的方法可以做到这一点。但是对于SharePoint的所有东西,有多种方法可以完成。由于您无法访问SP Designer或服务器本身,因此阻力最小的路径可能是使用SP Web服务查询列表(例如,上午8点)并获取项目数,存储(持续存在) )某个地方的项目计数,然后再次查询列表(下午5点),并根据第一天的计数进行检查,并给你一个总数。
您可以通过{Web站点服务http://server_name/_vti_bin/Lists.asmx
访问列表数据。使用类似下面的代码来获取列表计数。您可以将存储的值保存在任何位置 - 文本文件,本地存储,内存..
注意,您需要向项目添加Web Service引用。在下面的代码中,这被命名为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;
}