我现在已经把头撞到了墙上太久了。
我一直在为我的Sharepoint服务器使用lists.asmx webservice(2007年,不幸的是没有客户端对象模型),我已经能够成功更新服务器上的每个所需项目字段...除了日期。而且我不是指只读日期。只需以mm / dd / yyyy格式输入网站上的列表项目的日期。
我在C#中,如果有人能看到对我的CAML进行可能的简单修正(问题出在哪里,我很相当)我会非常感激。
batchElementGlobal.InnerXml = "<Method ID='1' Cmd='Update'>" +
"<Field Name='ID'>" + GlobalVariables.ID + "</Field>" +
"<Field Name='Title'>" + tempExperiment.ProjName + "</Field></Method>" +
"<Method ID='1' Cmd='Update'>" +
"<Field Name='ID'>" + GlobalVariables.ID + "</Field>" +
"<Field Name='Experiment_x0020_Lead'>" + tempExperiment.ProjLead + "</Field></Method>" +
"<Method ID='1' Cmd='Update'>" +
"<Field Name='ID'>" + GlobalVariables.ID + "</Field>" +
"<Field Name='Technology_x0020_Partner'>" + tempExperiment.TechPartner + "</Field></Method>" +
"<Method ID='1' Cmd='Update'>" +
"<Field Name='ID'>" + GlobalVariables.ID + "</Field>" +
"<Field Name='IT_x0020_Functional_x0020_Area'>" + tempExperiment.FunctionalArea + "</Field></Method>" +
"<Method ID='1' Cmd='Update'>" +
"<Field Name='ID'>" + GlobalVariables.ID + "</Field>" +
"<Field Name='Start_x0020_Date'>" + strProjStartDateTime + "</Field></Method>" +
"<Method ID='1' Cmd='Update'>" +
"<Field Name='ID'>" + GlobalVariables.ID + "</Field>" +
"<Field Name='End_x0020_Date'>" + strProjEndDateTime + "</Field></Method>" +
"<Method ID='1' Cmd='Update'>" +
"<Field Name='ID'>" + GlobalVariables.ID + "</Field>" +
"<Field Name='Read_x0020_Out_x0020_Date'>" + strProjReadoutDateTime + "</Field></Method>" +
(这是一个精简的版本。想要展示我如何格式化多个单词字段并且它们可以工作.strProjXXXDateTime字符串都采用相同的格式。例如:“6/18/2012”)
SharePoint上的日期可能有某种格式,但我认为既然您可以在网站上以标准字符串格式输入日期,那么使用字符串将完全是一种选择。也许不是?如果您还有其他需要,请告诉我。
谢谢!
(旁注 - 在过去的测试中,我认为我得出结论,每个领域都需要自己的方法部分,我认为这很奇怪。即使它正在更新一个项目,它也需要区分。这只是一个侥幸吗?我可以吗?将所有字段放在一种方法下?)
答案 0 :(得分:0)
...是。愚蠢的错误。
http://msdn.microsoft.com/en-us/library/lists.lists.updatelistitems(v=office.12).aspx
或者,对于那些在家里玩的人,不喜欢点击链接:2006-1-11T09:15:30Z
我当然尝试将我的日期转换为这种格式,但显然它不够具体。
这就是诀窍。希望其他遇到这种愚蠢障碍的人发现这很有用。
这就是全部。 :)
答案 1 :(得分:0)
在自定义列表的ItemUpdating(SPItemEventReceiver)中,为了更新自定义日期时间字段的日期(DateOnly模式),我被迫使用:
SPUtility.CreateISO8601DateTimeFromSystemDateTime(DateTime.Today)
处理日期的奇怪方法;)