簡體   English   中英

SharePoint計算字段在項目編輯時重置

[英]SharePoint Calculated Field resets on item edit

我正在使用從舊Windows 2003服務器遷移到現有2008服務器的SharePoint列表。 此列表用於跟蹤用戶針對另一個應用程序提出的問題-如果需要的話,列出要執行的工作。

在舊列表中,有一個ID字段。 在新區域中重新創建列表時,分配的ID號不同,例如

Old ID    New ID
--------- ---------
5         204
6         2
7         3
8         159
9         4

這種分配確實是相當隨機的。

要對此進行否定,將創建一個計算列,因此在遷移之前提出的ID使用舊ID號,而在遷移之后提出的新調用使用計算值。 計算是

=IF(ISBLANK([ID (Old)]),ID+8,IF([ID (Old)]<=348,[ID (Old)],ID+8))

這會將ID (Old)與空白進行比較,如果是,則為新呼叫,並且應具有默認ID號加上8(我認為在開發過程中總共進行了8次呼叫,然后將其刪除)。

否則,如果舊ID號小於348(我們遷移時的電話號碼),請使用舊ID號。

如果兩個條件都不滿足,只需將ID設置為新的ID號加8。

創建新呼叫時,此方法工作正常。

當我編輯呼叫時出現問題。 例如,如果我將ETA設置為新值並保存呼叫,則Calculated ID 始終會重置為8。

我可以通過以下方法解決此問題:進入“列表設置”->“打開計算列”->然后單擊“確定”。 這將重新應用計算,並且所有內容均已正確編號。

信息-由於環境的原因,我根本無法使用SharePoint Designer。

問題是,編輯項目時如何停止重新編號?

ID字段在計算列中的表現有些奇怪。 計算所得的列公式將找到項目的ID,並在創建項目或修改公式時對其進行正確解析,但是正如您所發現的,當修改項目時,公式無法找到ID值。 (我的猜測是,這與ID字段未包含在更新時發送到數據庫的列值列表中有關,也許是因為ID字段永遠都不會更改。)

解決此問題的一種方法是,每當有一個項目時,使用工作流(或定制事件處理程序,如果您有太多時間)將ID字段復制到另一列,例如數字列或一行文本列創建。 然后,您可以在公式中使用該新列,而不使用ID列。

為了防止人們更新您的虛擬ID列,您可以將其從表單中隱藏。 為此,請首先啟用列表內容類型的管理,然后編輯“項目”內容類型,找到新的虛擬ID列,然后將其更改為“隱藏”(而不是“必需”或“可選”)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM