共用方式為


重新發佈相同的 InfoPath 窗體範本時,會重新建立從 InfoPath 欄位發佈的數據行

原始 KB 編號: 2554288

徵狀

請試想下列案例:

  • 您可以建立 Office InfoPath 窗體範本,並將其發佈至 SharePoint 中的文件庫。 在發佈期間,您會選取要在文檔庫中發佈為數據行的特定 InfoPath 字段。 發佈表單範本之後,您決定將相同的窗體範本和相同的欄位發佈至相同 SharePoint 網站上的不同文檔庫。

  • 稍後,您會在 InfoPath 窗體範本中實作變更,並以與第一次發佈期間相同的順序,將表單範本重新發佈至這兩個文檔庫。

在此案例中,會重新建立從 InfoPath 字段發行之文檔庫中的所有數據行。

在此程式中,也會更新 SharePoint 文件庫中重新建立之數據行的內部名稱,也就是說,從 0 開始的數值會後綴為舊的數據行名稱。 例如,名為 LastName 的數據行會變更為 LastName0

資料行的重新建立是兩個步驟的程式:

  1. 數據行會再次新增至 SharePoint 文件庫。
  2. 不會與 InfoPath 字段相關聯的數據行會被移除。

原因

InfoPath 會將發佈至 SharePoint 文件庫的欄位清單儲存在本機指令清單中,以及與這些字段相關聯的數據行。 這是藉由參考 SharePoint 中的數據行標識碼 (具有 InfoPath 欄位的唯一 GUID 值) 來完成。

當您第二次將更新的 InfoPath 窗體範本發佈至 SharePoint 文檔庫時,InfoPath 會檢查具有相關聯標識符的數據行是否已經存在。 如果找不到對應的數據行,就會在文檔庫中建立新的數據行。 任何未與任何 InfoPath 字段相關聯的數據行都會從文檔庫中刪除。

當您將相同的窗體範本發佈至多個 SharePoint 文件庫時,會在背景中執行下列作業:

  • 當您第一次將窗體範本發佈至第一個文檔庫時,會建立每個已發佈的數據行,並與對應的 InfoPath 字段相關聯。

  • 當您第一次將窗體範本發佈至第二個連結庫時,InfoPath 找不到與儲存標識符相關聯的數據行,因此會建立新的數據行。 然後,它會將新的數據行標識碼與對應的InfoPath字段產生關聯。

  • 當您第二次將窗體範本發佈至第一個連結庫時,InfoPath 找不到與預存標識符相關聯的數據行,因為第二個連結庫的 GUID 目前與欄位相關聯。 因此,InfoPath 會建立新的數據行,進而取得新的標識符,並與 InfoPath 字段相關聯。

  • 在此程式中,會建立許多與任何 InfoPath 字段無關的數據行,並從文檔庫中移除。

  • 當您第二次將窗體範本發佈至第二個文檔庫時,會重複此行為。

注意事項

如果將 InfoPath 窗體範本發佈為網站內容類型,或 InfoPath 欄位在 SharePoint 中發佈為網站數據行,就不會發生此問題。

解決方案

有幾個方法可防止這種情況發生:

  • 為要在 SharePoint 網站上發佈的每個 InfoPath 字段建立網站數據行,並在將 InfoPath 窗體範本發佈至這兩個文檔庫時選取預先建立的網站數據行。

    由於網站數據行的標識碼不會變更,因此 InfoPath 不需要重新建立現有的數據行。

  • 建立 InfoPath 窗體範本的個別複本,每個 SharePoint 文檔庫各一個。 這可確保 InfoPath 不會重新建立現有的數據行,因為數據行標識碼不會變更。

    這種方法的缺點是,您必須實作所有使用中窗體範本複本中的所有變更。

注意事項

一般而言,建議的方法是將窗體範本發佈為網站內容類型,並將網站內容類型與兩個 SharePoint 文檔庫建立關聯,而不是發佈 InfoPath 窗體範本兩次。

其他相關資訊

如需詳細資訊,請 參閱新增、移除或修改 SharePoint 文檔庫數據行或網站數據行