停用模型導向應用程式中的自動儲存
自動儲存功能可協助應用程式使用者專注於其工作,而不必試著儲存表單上的資料。 大多數人對於每次更新資料列時不必明確儲存資料都讚譽有加,不過,某些組織可能有設計必須明確儲存的自訂。 對於這些組織,有管理如何套用自動儲存的選項。
自動儲存的運作方式
根據預設,更新的表格和傳統表格的所有主要表單會啟用自動儲存。 在列建立 (最初儲存) 後,表單的任何變更會在變更後的 30 秒自動儲存。 如果表單中未有任何變更,則當表單開啟時不會發生自動儲存。 變更後,自動儲存重新開始前會有 30 秒的時間。 當您編輯時,如果其他人也更新了同一資料列,則這些變更將會在自動儲存時擷取並顯示在表單中。
若已啟用自動儲存,則儲存按鈕僅在資料列初始儲存時才會出現。 建立資料列後,命令列沒有顯示儲存按鈕,但是您可以在右下角看到 右下方的按鈕顯示是否有任何未儲存的變更。 如果自動儲存已停用,這個控制項也會顯示。
您可以選取這個按鈕,儲存資料列並立即重新整理表單中的資料。 若已啟用自動儲存,則每當您離開資料列或關閉顯示列的另一個視窗,資料列都會被儲存。 對於未更新的表格,不需要在表單中出現儲存後關閉按鈕。
您是否應該停用自動儲存?
如果您在資料列儲存時,有執行中的外掛程式、工作流程或表單指令碼,則它們會在每次發生自動儲存時執行。 如果這些擴充功能未設計成配合自動儲存使用,則可能會造成非預期的行為。 無論自動儲存是否啟用,外掛程式、工作流程和表單指令碼都應該設計為尋找特定變更,且不應該對每個儲存事件無差別執行。
如果您有對資料表設定稽核,每一次儲存被視為個別的更新。 如果有人在具有未儲存變更的表單上停留超過 30 秒,則只有他們於自動儲存執行之後新增更多資料時,您才會看到另一個項目。 如果您有依賴稽核資料並將每次儲存視為資料列個別編輯 ("touch") 的報表,可能會看到記錄編輯頻率的增加。 如果您使用這種方法,不論是否啟用自動儲存,都應該思考個別使用者行為會使其成為不可靠的計量。
停用組織的自動儲存
如果您判斷自動儲存會對使用的任何擴充功能造成問題,Power Platform 管理員可以為您的組織停用此功能。 沒有為個別表格或表單停用自動儲存的設定。
- 登入 Power Platform 系統管理中心,移至環境,然後開啟您想要的環境。
- 在命令列上選取設定。
- 展開產品,然後選取行為。
- 在基本行為底下 ,對自動儲存,選取關閉。
停用表單的自動儲存
如果您要停用特定表格表單的自動儲存,您可以將程式碼新增至表格中的 OnSave
事件。
注意
透過使用使方法,表單將會停用自動儲存功能,但當您選取 時,仍可儲存資料。 仍然會儲存資料。 如果您嘗試離開或關閉已變更資料的表單,系統會提示您儲存完變更後才能離開或關閉表單。
使用以下程序會造成表單上的儲存後關閉按鈕無法運作,因為它呼叫 saveMode
2 上的 preventDefault
,而這會引用儲存後關閉 。 您可以移除以下的 getSaveMode() == 2
檢查以避免這種情況,但如果您嘗試離開表單或關閉資料已變更的表單,則表單會自動儲存。 因此,儲存後關繼續按鈕也不起作用。
登入 Power Apps。
在左導覽窗格選取資料表,選取所需的資料表,然後選取表單區域。 如果此項目不在側邊面板窗格中,請選取 ...其他 ,然後選取您想要的項目。
您也可以從解決方案中調整資料表。 若要這樣做,請選取左窗格的解決方案,選取該資料表,然後選取表單區域。 如果此項目不在側邊面板窗格中,請選取 ...其他 ,然後選取您想要的項目。
開啟您要編輯的表單。
選取切換至傳統,以在傳統表單設計師中編輯表單。
建立 JavaScript Web 資源並將它加入至表單:
在表單編輯器中,在表單群組中選擇表單屬性。
在事件索引標籤上,在表單程式庫中選擇新增。
在查詢資料列對話方塊中,選擇新增。
在 Web 資源表單中輸入下列資訊:
標題 參考資料 名稱 preventAutoSave 顯示名稱 防止自動儲存 輸入 指令碼 (JScript) 在類型資料行旁,選擇文字編輯器。
在來源資料行中,貼上下列程式碼:
function preventAutoSave(econtext) { var eventArgs = econtext.getEventArgs(); if (eventArgs.getSaveMode() == 70 || eventArgs.getSaveMode() == 2) { eventArgs.preventDefault(); } }
選擇確定,關閉文字編輯器。
選擇儲存,儲存 Web 資源,然後關閉 Web 資源視窗。
您建立的新 Web 資源在查詢資料列對話方塊中已選取。 選擇新增關閉對話方塊。
設定
OnSave
事件:在表單屬性視窗中的事件處理常式區段,將事件設定為 OnSave。
選取新增。
在處理常式屬性視窗中,將程式庫設定為您在上一個步驟中加入的 Web 資源。
在函數資料行中,輸入 '
preventAutoSave
'。 這個值區分大小寫。 不要包含引號。確定已勾選已啟用。
勾選傳送執行內容做為第一個參數。
重要
如果不這樣做,指令碼將無法運作。
處理常式屬性對話方塊如下所示: 自訂前綴:「new_」可能會因為您組織之預設發行者設定的自訂前綴而有所不同。
選取確定關閉處理常式屬性對話方塊。
如果有
OnSave
事件的其他事件處理常式,請使用綠色箭號將這個事件處理常式移至頂端。表單屬性應如下所示。 請注意,在此處顯示的範例中,更新是從解決方案中進行的,因此發行者前綴 (dspin_) 與預設發行者 (new_) 提供的前綴不同。 這是因為該解決方案使用不同的發行者。
選取確定以關閉表單屬性對話方塊。
選取儲存後關閉以關閉表單。
在方案總管中,選取發佈所有自訂。
在您將此指令碼套用至 OnSave
事件後,當使用者使用此表單編輯資料列時,未儲存的變更訊息會出現在表單的右下角,就像自動儲存未停用一般。 但是除非有人選取,否則此訊息不會消失 此訊息不會消失。