Sharepoint 2010 视图过滤显示上周,本周或下一周的数据
2011-11-03 11:03
411 查看
最近在用sharepoint 2010 做一个叫:工作安排的功能。所有数据存放在一个自定义列表里,里面有个开始时间栏。用户要查看开始时间所在周的下一周的数据。比如,开始时间是2011-11-03,那么用户要查看2011-11-07~2011-11-13内的数据。
在这个过程遇到的一个最大的问题是怎么根据开始时间计算出开始时间所在周下周周一的日期。为这个问题纠结了好几天,不过在网友的帮助下终于解决了。
(注意,下面的内容并不能满足我的需求,但是它的思路非常好,让我有了启发)
1.获取指定日期所在周周一的日期。在自定义列表里添加一个计算栏叫:WeekStart。把下面的formula表达式写到公式里:
=IF(TEXT(WEEKDAY(开始时间),"ddd")="周一",开始时间,IF(TEXT(WEEKDAY(开始时间-1),"ddd")="周一",开始时间-1,IF(TEXT(WEEKDAY(开始时间-2),"ddd")="周一",开始时间-2,IF(TEXT(WEEKDAY(开始时间-3),"ddd")="周一",开始时间-3,IF(TEXT(WEEKDAY(开始时间-4),"ddd")="周一",开始时间-4,IF(TEXT(WEEKDAY(开始时间-5),"ddd")="周一",开始时间-5,开始时间-6))))))
注意:1.上面的公式应该在一行。2.你可以根据自己的需要将开始时间改成你需要的栏名,比如创建时间。3.如果你用的SharePoint 是英文版,请把周一改成:Mon。3.返回类型要选择日期和时间
上面公式的计算结果示例:
如果开始时间是:2011/11/22 17:11 WeekSart的值是:2011/11/21 。
扩展:
如果我们要获得开始时间所在周的周日的日期公式又是怎么样呢?新建一个计算栏WeekEnd,公式如下:
=IF(TEXT(WEEKDAY([开始时间]),"ddd")="周日",[开始时间],IF(TEXT(WEEKDAY([开始时间]+1),"ddd")="周日",[开始时间]+1,IF(TEXT(WEEKDAY([开始时间]+2),"ddd")="周日",[开始时间]+2,IF(TEXT(WEEKDAY([开始时间]+3),"ddd")="周日",[开始时间]+3,IF(TEXT(WEEKDAY([开始时间]+4),"ddd")="周日",[开始时间]+4,IF(TEXT(WEEKDAY([开始时间]+5),"ddd")="周日",[开始时间]+5,[开始时间]+6))))))
注意:和WeekStart一样,注意公式内容的调整。
上面公式的计算结果示例:
如果开始时间是:2011/11/22 17:11 WeekSart的值是:2011/11/27 。
注意,如果你的sp是中文版,请把公式中的Today换成今日。
说明:以上内容基于http://rehmangul.sauftveyr.com/2010/10/06/filter-views-based-on-a-week/,这篇文章收集整理。
老外这篇文章写的我有点糊涂,他计算获取上下周数据的公式,也有点奇怪,所以具体公式我没有引用,如果需要请看英文原版。不管怎么样,老外公式的思想很有参考价值。这里要特别感谢我的那位网友。
另外,获取指定日期所在周周一的日期其实有更简单的公式:=日期-(WEEKDAY(日期))+2
参考:/article/5306131.html
经测试:老外的两个Formula公式获取的是指定日期所在周的周一和周日的日期。如下图,我是根据开始时间计算的。
另外,关于获取上周,本周及下周的数据的公式,也不对。除了获取本周的可行外,其他都不行,比如获取上周的数据,会把上周,上上周。。。的所有数据都获取到。
有问题欢迎留言。
在这个过程遇到的一个最大的问题是怎么根据开始时间计算出开始时间所在周下周周一的日期。为这个问题纠结了好几天,不过在网友的帮助下终于解决了。
(注意,下面的内容并不能满足我的需求,但是它的思路非常好,让我有了启发)
1.获取指定日期所在周周一的日期。在自定义列表里添加一个计算栏叫:WeekStart。把下面的formula表达式写到公式里:
=IF(TEXT(WEEKDAY(开始时间),"ddd")="周一",开始时间,IF(TEXT(WEEKDAY(开始时间-1),"ddd")="周一",开始时间-1,IF(TEXT(WEEKDAY(开始时间-2),"ddd")="周一",开始时间-2,IF(TEXT(WEEKDAY(开始时间-3),"ddd")="周一",开始时间-3,IF(TEXT(WEEKDAY(开始时间-4),"ddd")="周一",开始时间-4,IF(TEXT(WEEKDAY(开始时间-5),"ddd")="周一",开始时间-5,开始时间-6))))))
注意:1.上面的公式应该在一行。2.你可以根据自己的需要将开始时间改成你需要的栏名,比如创建时间。3.如果你用的SharePoint 是英文版,请把周一改成:Mon。3.返回类型要选择日期和时间
上面公式的计算结果示例:
如果开始时间是:2011/11/22 17:11 WeekSart的值是:2011/11/21 。
扩展:
如果我们要获得开始时间所在周的周日的日期公式又是怎么样呢?新建一个计算栏WeekEnd,公式如下:
=IF(TEXT(WEEKDAY([开始时间]),"ddd")="周日",[开始时间],IF(TEXT(WEEKDAY([开始时间]+1),"ddd")="周日",[开始时间]+1,IF(TEXT(WEEKDAY([开始时间]+2),"ddd")="周日",[开始时间]+2,IF(TEXT(WEEKDAY([开始时间]+3),"ddd")="周日",[开始时间]+3,IF(TEXT(WEEKDAY([开始时间]+4),"ddd")="周日",[开始时间]+4,IF(TEXT(WEEKDAY([开始时间]+5),"ddd")="周日",[开始时间]+5,[开始时间]+6))))))
注意:和WeekStart一样,注意公式内容的调整。
上面公式的计算结果示例:
如果开始时间是:2011/11/22 17:11 WeekSart的值是:2011/11/27 。
注意,如果你的sp是中文版,请把公式中的Today换成今日。
说明:以上内容基于http://rehmangul.sauftveyr.com/2010/10/06/filter-views-based-on-a-week/,这篇文章收集整理。
老外这篇文章写的我有点糊涂,他计算获取上下周数据的公式,也有点奇怪,所以具体公式我没有引用,如果需要请看英文原版。不管怎么样,老外公式的思想很有参考价值。这里要特别感谢我的那位网友。
另外,获取指定日期所在周周一的日期其实有更简单的公式:=日期-(WEEKDAY(日期))+2
参考:/article/5306131.html
经测试:老外的两个Formula公式获取的是指定日期所在周的周一和周日的日期。如下图,我是根据开始时间计算的。
另外,关于获取上周,本周及下周的数据的公式,也不对。除了获取本周的可行外,其他都不行,比如获取上周的数据,会把上周,上上周。。。的所有数据都获取到。
有问题欢迎留言。
相关文章推荐
- SharePoint 2010 使用url参数过滤列表视图数据(使用get方法过滤列表数据)
- 使用SharePoint的数据视图,显示现有数据库中的数据[转载]
- sharepoint 2010 list 无法使用数据视图
- 通过QtMVC实现视图数据分离与数据的排序及过滤显示(续篇)让效率飘起来~
- sharepoint 2010 列表的数据表视图无法使用 the list cannot be displayed in datasheet view 解决方法
- [SharePoint 2010] List View Checkbox--视图列表项中不显示Checkbox
- Sharepoint 2010 利用designer显示 个人页面数据
- 通过QtMVC实现视图数据分离与数据的排序及过滤显示
- [SharePoint 2010]一个完整的Silverlight显示List数据的例子
- SharePoint 2010 数据表视图的多行粘贴
- sharepoint 2010 查看我的文档并且显示文件夹的视图配置小技巧
- SharePoint 2010 中有个新的列表模板“导入电子表格”可以直接导入Excel数据并创建为列表 .
- [SharePoint 2010]开发与SharePoint2010 数据同步的Outlook2007 add-in
- 一步步学习SPD2010--第五章节--处理数据视图(5)--显示和隐藏内容
- 列表不能在数据表视图中显示
- sharepoint 2010 列表数据分页控件介绍 pagination UserControl
- EF5+MVC4系列(7) 后台SelectListItem传值给前台显示Select下拉框;后台Action接收浏览器传值的4种方式; 后台Action向前台View视图传递数据的四种方式(ViewDate,TempDate,ViewBag,Model (实际是ViewDate.Model传值))
- sharepoint 2010 自定义列表启用版本记录控制 如何在修改数据不产生新版本
- Sharepoint 2010 SPListItem的显示或编辑页面删除后自定义操作
- sharepoint 2010 User Profile Service 与AD用户数据同步