我曾用WSS3的清單功能加上一點點客製,寫了一個讓系統管理人員每天申報日常檢查作業結果的網頁,填完的結果則輸出成Reporting Service報表,開發起來很省工,且每天做起來完全不沾手,也避免平日懶得寫,到了檢查前一天才一口氣填一疊的問題。(這勾起我裝檢前一天切換六枝原子筆寫完半年一二級保養表的回憶)

最近有其他部門提出需求,希望我將這個清單移殖到另一個WSS網站上。

要做這件事,最簡單的方法是:

  1. 在我的WSS上將清單另存成範本(甚至連內容也可以一起包進去)
  2. 由我的WSS清單範本庫下載stp檔案
  3. 將stp上傳到新WSS的清單範本庫
  4. 在新的WSS上利用該清單範本建立新清單
  5. 搞定收工

這種搬家動作,以前做過數次,都很順利。直到這次。因為新的WSS安裝的是英文版,上傳後,清單範本清單中卻看不到剛上傳的stp,我懷疑是因語系不同(stp來源是正體中文版)WSS才不給用。

Google了一下,證實了這點,同篇文章中也有教怎麼將.stp先改名成.cab,取出manifest.xml修改語系(1028->1033)後再用Visual Studio建一個cab專案(居然有這種專案,又長見識了),重建出.cab再改名回.stp,這回再上傳,就可拿來建新的清單了。

不過,原本客製過的NewForm.aspx在執行時遇到另一個問題,由於其中有一些<% ... %>的寫法用來抓使用者身份及當天日期,在新的WSS上被判定禁止執行:
An error occurred during the processing of /Lists/List/NewForm.aspx. Code blocks are not allowed in this file.

解決方法是在web.config中加入
<PageParserPaths>
        <PageParserPath VirtualPath="/Lists/List/*" CompilationMode="Always" AllowServerSideScript="true" IncludeSubFolders="true"/>
</PageParserPaths>

參考文件: http://weblogs.asp.net/soever/archive/2006/07/27/SharePoint-2007_3A00_-using-ASP.NET-server-side-code-in-your-pages.aspx


Comments

Be the first to post a comment

Post a comment