2009-07-30 141 views
5

所以,我遇到了某個人可能已經解決的問題(或者我希望)。我有一個日期時間字段,我使用了一個contenttype(在一個listtemplate上),它有自己的editform。將datetime字段的值設置爲null

Here's發生了什麼的演練:

  1. 添加值到datetime列,節省了更新後的值顯示出來(如預期)。
  2. 更新datetime列並通過editform添加null(清空值)。該值不會更新,而是顯示舊值。

我做了一些嘗試用這個,我得出的結論是,如果我添加一個eventreceiver並嘗試更新存在的價值就doesn't甚至進入eventreceiver爲空字符串(我有一個想法,值是一個空白字符串,並且Sharepoint不能將它解析爲空日期時間),這導致我認爲存在導致此問題的fieldcontrol問題。我還在MSDN上發現了this這篇文章,這篇文章似乎是圍繞着同樣的問題。而且,內容類型中的日期時間字段不是必需的。

任何想法或建議嗎?

UPDATE:

顯然,當我使用自定義editform這只是發生。當我使用內置列表模板時,它就像一個魅力一樣。

回答

0

經過一番深入的研究後,我發現這個問題的根源與我在列表中的列和實際的xml文件之間使用XML節點傳播有關。我有prevoiusly一直在努力與這個標準的文本字段,並認爲我已經照顧這個問題..顯然不是。 DateTime字段顯然不會發送到事件接收器後,如果它是null,因爲我的代碼將不會將其作爲空值選取。如果在afterproperties中找不到它們,我不得不考慮這種情況並將它們添加到afterproperties中。我將撰寫關於這些問題的博文系列,並很快發佈到這篇文章的鏈接。

UPDATE:

現在我已經完成了我如何解決這個問題的博文。隨時查看: http://johanleino.wordpress.com/2009/08/24/node-demotion-does-not-work-with-blank-empty-values/

1

我在過去曾遇到類似的問題。這確實是一個已知的錯誤。解決辦法之一是將字段設置爲類型的最小值或最大值,並在需要時檢查此值並進行適當的轉換。根據您的設置和使用情況,您可以創建一個觸發器,將最小/最大值轉換爲空值,從而最小化處理此類工作所需的代碼。