文章目錄
- PreSaveAction()
- 在DVWP中使用PreSaveAction()
- 運行效果
有時使用者會在我們設想的順序之前點擊確定。不管是需要在儲存資料前先進行驗證,還是要抓一些其他的資訊,或者是建立一個通知讓使用者知道一些事情,都可以利用SharePoint的一個內建功能,該功能允許我們在儲存資訊被提交前截取確認按鈕的點擊事件。
事實上,我們甚至可以在標準的預設列表表單(類似NewItem.aspx等等)上使用該功能,除非你根本就不打算進入編輯狀態。
PreSaveAction()
在SharePoint裡預設的儲存(或確定)按鈕會在進行其他動作前首先調用PreSaveAction(),它是個空函數。所以,我們可以利用它來在清單項目儲存之前做些事情,甚至如果需要的話可以阻止其儲存。
只需簡單的將PreSaveAction()Javascript函數添加到頁面上的一個內容編輯器WebPart (簡稱CEWP)裡即可。如下:
<script language="javascript" type="text/javascript">function PreSaveAction() { // 做一些事情 - 在接下來的博文中,你將看到建議在這裡做的事 return true; //如果事情進展順利… //或 return false; // 如果事情進行的有問題…}</script>在DVWP中使用PreSaveAction()
如果你一直關注擴充DVWP系列的話,一定很關心這個功能在DVWP中該怎麼使用。在一個DVWP的列表表單操作中,不會調用PreSaveAction(),但是我們可以讓它去調用,同樣也很簡單。
若要從一個表單操作鏈結接中調用PreSaveAction(),只需在GenFireServerEvent調用前添加一個到它調用即可。
即,從原來的:
<a href="javascript: {ddwrt:GenFireServerEvent('__commit')}">儲存檔案</a>
變成:
<a href="javascript: if(PreSaveAction()) {ddwrt:GenFireServerEvent('__commit')}">儲存檔案</a>
通過把該調用放置在if條件裡,我們可以確保當我們不想後面的部分運行時就不會運行。也就是說,我們實現了與開箱即用的確定按鈕同樣的功能。
運行效果
最極端的一個實驗,如果將PreSaveAction()寫成下面這樣:
function PreSaveAction(){ alert("不允許修改!"); return false;}
就可以從頁面層次阻止使用者對列表資料的修改了。以下是在EditForm.aspx中點擊“確定”按鈕的運行效果:
在資料檢視Web組件中點擊“儲存檔案”連結時的運行效果:
下一篇中:我們將討論如果在DVWP的列表表單操作中使用工作流程。
參考資料
SharePoint: Extending the DVWP – Part 5: Doing Stuff Before Save on Submit – PreSaveAction()