所以,我遇到了一个人可能已经解决的问题(或者我希望如此)。我有一个datetime字段,我在一个contenttype(在listtemplate上)使用它有自己的editform。
以下是发生的事情的演练:
我做了一些实验,我得出的结论是,如果我添加一个事件接收器并尝试更新其中的值,它甚至不会将eventreceiver作为空字符串输入(我知道该值为as一个空字符串和sharepoint无法将其解析为空日期时间,这导致我认为fieldcontrol存在导致此问题的问题。我还在MSDN上发现了this文章,似乎是围绕同一个问题。而且,contenttype中的datetime字段不是必需的。
有任何想法或建议吗?
更新
显然,只有在我使用自定义编辑窗体时才会发生这种情况。当我使用内置的listtemplates之一时,它就像魅力一样。
答案 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/