将datetime字段的值设置为null

问题描述:

所以,我遇到了某个人可能已经解决的问题(或者我希望)。我有一个日期时间字段,我使用了一个contenttype(在一个listtemplate上),它有自己的editform。将datetime字段的值设置为null

Here's发生了什么的演练:

  1. 添加值到datetime列,节省了更新后的值显示出来(如预期)。
  2. 更新datetime列并通过editform添加null(清空值)。该值不会更新,而是显示旧值。

我做了一些尝试用这个,我得出的结论是,如果我添加一个eventreceiver并尝试更新存在的价值就doesn't甚至进入eventreceiver为空字符串(我有一个想法,值是一个空白字符串,并且Sharepoint不能将它解析为空日期时间),这导致我认为存在导致此问题的fieldcontrol问题。我还在MSDN上发现了this这篇文章,这篇文章似乎是围绕着同样的问题。而且,内容类型中的日期时间字段不是必需的。

任何想法或建议吗?

UPDATE:

显然,当我使用自定义editform这只是发生。当我使用内置列表模板时,它就像一个魅力一样。

经过一番深入的研究后,我发现这个问题的根源与我在列表中的列和实际的xml文件之间使用XML节点传播有关。我有prevoiusly一直在努力与这个标准的文本字段,并认为我已经照顾这个问题..显然不是。 DateTime字段显然不会发送到事件接收器后,如果它是null,因为我的代码将不会将其作为空值选取。如果在afterproperties中找不到它们,我不得不考虑这种情况并将它们添加到afterproperties中。我将撰写关于这些问题的博文系列,并很快发布到这篇文章的链接。

UPDATE:

现在我已经完成了我如何解决这个问题的博文。随时查看: http://johanleino.wordpress.com/2009/08/24/node-demotion-does-not-work-with-blank-empty-values/

我在过去曾遇到类似的问题。这确实是一个已知的错误。解决办法之一是将字段设置为类型的最小值或最大值,并在需要时检查此值并进行适当的转换。根据您的设置和使用情况,您可以创建一个触发器,将最小/最大值转换为空值,从而最小化处理此类工作所需的代码。