2014-03-19 29 views
1

我有一个C#应用程序,每周从CSV平面文件插入数据到SharePoint列表中,其中有超过30000条记录并且正在增长。使用[今日]和字符串字段筛选SharePoint 2007

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

有没有办法将我的文本字段转换为日期字段,可以用来像这样过滤,也可以将平面文件字符串转换为日期时间值,然后我甚至上传到SharePoint?

+0

什么您_'otherwise它不会在all'_上传的意思是转换成正确的格式? – banana

+0

当我将列表中的字段类型设置为日期和时间时,即使我尝试从C#中插入DateTime对象,上传函数也会返回无效的格式错误。 我听说过可能用于避免此问题的函数,但它们需要开发环境与SharePoint站点位于同一服务器上才能引用该DLL,这在我的情况中不可行。 –

回答

0

我最终找到了答案。

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");