【问题标题】:Filtering in SharePoint 2007 using [Today] and a String field在 SharePoint 2007 中使用 [Today] 和字符串字段进行筛选
【发布时间】:2014-03-19 15:03:18
【问题描述】:

我有一个 C# 应用程序,它每周将数据从 CSV 平面文件插入到 SharePoint 列表中,其中包含超过 30000 条记录并且还在增长。

管理层希望在视图中仅查看 90 天以下的项目,但日期字段作为单行文本插入(否则根本不会上传)。现在,我尝试使用 =TEXT(DateField,"yyyymmdd") 创建一个新的计算列,并将该字段设置为 DateTime 类型。然后,我尝试使用“NewColumn Greater Than [Today]-90”过滤视图中的新列,但返回的结果为零。

有没有办法将我的文本字段转换为可用于像这样进行过滤的日期字段,或者在我上传到 SharePoint 之前将平面文件字符串转换为 DateTime 值?

【问题讨论】:

  • 你说的'否则根本不会上传'是什么意思?
  • 当我在列表中将字段类型设置为日期和时间时,即使我尝试从 C# 插入 DateTime 对象,上传函数也会返回无效格式错误。我听说过可以用来避免此问题的函数,但它们要求开发环境与 SharePoint 站点位于同一台服务器上,以便引用 DLL,这在我的情况下是不可能的。

标签: c# sharepoint sharepoint-2007


【解决方案1】:

我最终找到了答案。

SharePoint 不允许我过滤以这种方式转换的字段,因此我必须以正确的格式上传数据。 CSV 提要给了我一个“yyyyMMdd”格式的字符串,但 SharePoint 需要在格式块之间使用连字符,例如:“yyyy-MM-dd”。 批处理元素内的 FieldRef 节点也需要如下所示:

"<Field Name='Date_x0020_Field' Type='DateTime' Format='DateOnly'>" + date + "</Field>"

我最终转换为 DateTime 对象,然后又转换回字符串,因为我正在以 datetime 格式集成一些其他数据,但您也可以轻松地手动插入连字符。

您可以使用Convert.ToDateTime(stringDate); 将字符串转换为日期时间,也可以使用dateTimeObject.ToString("yyyy-MM-dd"); 将字符串转换为正确的格式

【讨论】:

    猜你喜欢
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    • 2011-06-18
    • 2017-04-18
    相关资源
    最近更新 更多