2011-03-16 115 views
4

我有一個字段,它使用計算的列類型來引用ID字段。它基本上是:名稱& ID。例如。 Name01,Name02,Name03等ID字段不會自動更新

但是,當我向共享點添加新行時,此列不會自動更新,我必須在該字段中手動單擊以更新它。

有沒有辦法解決這個問題?謝謝

回答

0

這是設計。

計算列不能在其表達式中包含ID字段。這是因爲Sharepoint在創建/更新時存儲計算字段的結果值。項目創建後,ID尚不存在。因此它沒有什麼可以填充的。但是,一旦更新了值,就可以看到該ID已填充且現在可用。

+0

感謝Brian,雖然你是正確的ID字段填充,每當我編輯該行中的另一個字段,ID字段消失,我只留下'姓名'而不是來自ID的數字。每次我編輯行時都會發生這種情況。 – Vin 2011-03-16 17:14:40

+0

這可能是由於版本控制,您是否在此列表上啓用了版本控制?爲了解決這個問題,我必須實現一個工作流或事件接收器來更新持久化值。 – 2011-03-16 19:08:25

1

我也見過這種行爲,它並不明顯,因爲當你第一次創建列(並且每次你編輯列)時,一切看起來都很好,並且很漂亮。

我發現我可以使用SharePoint Designer工作流程解決此問題。工作流更新普通文本字段以存儲ID值,然後計算列可以引用該文本字段而不是實際ID字段。

步驟:

  1. 文本字段添加到我叫項ID
  2. 在SharePoint Designer列表中,添加一個新的工作流程到列表,並將其設置觸發每當項目被添加或更新。
  3. 添加工作流操作該項目的ID存儲到一個字符串(構建動態字符串)
  4. 添加工作流操作設置項目ID字段我保存在前面的步驟(集場當前項)
  5. 添加工作流操作來更新當前項目(更新列表項)

然後,我只需要參考[項目ID]在我的計算列,而不是[ID],它就像一個魅力。

一個缺點是用戶最終會看到New和Edit表單上的ItemID字段,除非您執行某些操作來隱藏它。

如果您有更多時間在手中,並且希望避免發送工作流歷史記錄列表,您可以在事件處理程序中執行相同的解決方法。