更新列表项..几乎奏效

本文关键字:列表 更新 | 更新日期: 2024-09-20 17:31:32

我的头撞在墙上太久了。

我一直在为我的Sharepoint服务器使用lists.asmx Web服务(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端的日期可能有某种格式,但我认为,由于您可以在网站本身以标准字符串格式输入日期,因此使用字符串完全是一种选择。也许不是?如果你还需要什么,请告诉我。

谢谢!

(旁注——在过去的测试中,我想我得出的结论是,每个字段都需要自己的方法部分,我认为这很奇怪。即使它正在更新一个项目,它也需要区分。这只是侥幸吗?我能把所有字段都放在一个方法下吗?)

更新列表项..几乎奏效

在自定义列表的ItemUpdating(SPItemEventReceiver)中,为了更新自定义日期-时间字段的日期(DateOnly模式),我被迫使用:

SPUtility.CreateISO8601DateTimeFromSystemDateTime(DateTime.Today)

处理日期的奇怪方式;)

。。。是的。愚蠢的错误。

http://msdn.microsoft.com/en-us/library/lists.lists.updatelistitems(v=office.12).aspx

或者,对于那些在家玩游戏的人来说,他们不喜欢点击链接:2006-1-11T09:15:30Z

我确实试过把我的约会转换成这种格式,但显然不够具体。

这就成功了。希望其他遇到这种愚蠢障碍的人会发现这很有用。

仅此而已。:)