是否可以每天两次比较相同的Sharepoint列表,以查找更改/更改计数

时间:2012-06-26 19:37:58

标签: sharepoint sharepoint-2007

我是SharePoint新手,对列表比较有一般性问题。目前,有一个用户生成的列表不断变化,我想收集有关变化的定量数据。每天,我在8:00进来,然后在5:00再次离开。我想知道在8:00和5:00之间该列表中有多少项目,然后能够查看结果。例如,该列表包含我需要完成的当前项目。如果我在8:00进入时有20,而当我离开时有3,我希望能够查看我完成85%项目和17/20的数据。 这可能吗?

*请注意,目前,我没有SharePoint Designer或访问服务器。假设需要访问并且我可以获得它,那么最好的方法是什么?

2 个答案:

答案 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;
                }