将datetime字段的值设置为null

时间:2009-07-30 14:55:51

标签: sharepoint

所以,我遇到了一个人可能已经解决的问题(或者我希望如此)。我有一个datetime字段,我在一个contenttype(在listtemplate上)使用它有自己的editform。

以下是发生的事情的演练:

  1. 向datetime列添加值并保存更新的值会显示(如预期的那样)。
  2. 更新datetime列并通过editform添加null(清空值)。该值未更新,而是显示旧值。
  3. 我做了一些实验,我得出的结论是,如果我添加一个事件接收器并尝试更新其中的值,它甚至不会将eventreceiver作为空字符串输入(我知道该值为as一个空字符串和sharepoint无法将其解析为空日期时间,这导致我认为fieldcontrol存在导致此问题的问题。我还在MSDN上发现了this文章,似乎是围绕同一个问题。而且,contenttype中的datetime字段不是必需的。

    有任何想法或建议吗?

    更新

    显然,只有在我使用自定义编辑窗体时才会发生这种情况。当我使用内置的listtemplates之一时,它就像魅力一样。

2 个答案:

答案 0 :(得分:1)

我过去曾遇到类似的问题。这确实是一个已知的错误。一种解决方法是将字段设置为类型的最小值或最大值,并在需要时检查此值并执行适当的转换。根据您的设置和使用情况,您可以创建一个触发器,将min / max值转换为null,从而最大限度地减少处理此类解决方案所需的代码。

答案 1 :(得分:0)

经过一些深入的研究后,我发现这个问题的根源与我在列表中的列和实际的xml文件之间使用XML节点传播这一事实有关。我prevoiusly在标准文本字段上一直在努力,并认为我已经处理了这个问题......显然没有。显然,如果属性为null,则DateTime字段显然不会被发送到eventreceiver,因为我的代码不会将其作为空值获取。如果我在afterproperties中找不到它们,我不得不接受它并将它们添加到afterproperties中。我将制作关于这些问题的博客文章系列,并很快发布这篇文章的链接。

更新:

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