• SPCAMLEditor使用系列(3)利用SPCamlEditor实现 时间字段跟当前时间进行实时比较计算


    有这样一个需求:

     列表中有一个时间字段记录任务的开始时间(BeginTime), 现在要添加另外一个字段(TotalDay),这个字段显示到今天为止,任务开始了多少天。

    看到这个需求,第一反应是采用计算列结合Today函数来实现。

    经过研究,计算列式只有在编辑列表项的时候才会求值, 而且它是不支持Today和Me函数的。无法实现这个需求。

    另外一个方案:写一个timer job,每天定时运行一下,更新下TodalDay字段的值。

    毫无疑问,这个方案是行得通的,但是实现起来比较复杂。

    幸运的是,我们可以通过列表视图的caml,直接控制列表的html输出。结合caml和javascript可以比较简单的实现这个需求。 

    既然要修改视图的caml,自然少不了SPCamlEditor这个工具:http://www.cnblogs.com/jianyi0115/archive/2008/05/04/1182483.html

    修改方法:

    1)用SPCamlEditor复制出一个字段(从编辑字段复制)

    2)修改DisplayPattern如下: 

      <DisplayPattern>

        <HTML><![CDATA[<script>currentTimeFieldValue = "]]></HTML>

        <Column Name="BeginTime" />

        <HTML><![CDATA[";</script>

          ]]></HTML>

        <HTML><![CDATA[<script>

           document.write(parseInt((new Date() - Date.parse(currentTimeFieldValue)) / 1000 / 24 / 3600));

          </script>]]></HTML>

      </DisplayPattern>

    这个caml代码还是比较简单的,为了简化caml的结构,声明了一个js变量currentTimeFieldValue 放置当前的时间字段值。然后document.write将计算结果输出到页面。

    实际使用时,请修改BeginTime为相应时间字段名。 

     

     

  • 相关阅读:
    使用VisualStudio2015开发QT项目
    界面控件
    SmartGit 试用过期
    视图和模型变换
    模型变换和视图变换
    一元二次方程
    论cudnn与cuda之间的关系,和实际例子测试。
    在Ubuntu 18.04上安装Tensorflow
    ubuntu14.04安装CUDA8.0
    Windows10系统远程桌面连接出现卡顿如何解决
  • 原文地址:https://www.cnblogs.com/jianyi0115/p/1776627.html
Copyright © 2020-2023  润新知