之前在某個不能使用任何後台代碼的項目中開始研究的用javascript去控制SharePoint,略有心得,也曾經在賞梅齋的moss開發群裡做過一次和這個話題相關的講座,記錄點擊這裡。
前一陣整理了一下這個項目裡用到的一些javascript的方法,並隨著後面的幾個項目添加了一些新的內容進去,現在發布出來。
地址是:http://www.codeplex.com/SPJsLib
主要是基於jQuery這個javascript庫來做的,我做的時候和測試的時候jQuery還是1.2.6版本,現在已經是1.3.1了,在項目的release裡也包含了一個1.2.6版本經過壓縮的jQuery檔案。
使用的時候不需要對jQuery有瞭解,當然如果瞭解jQuery的話更快速的實現更豐富的功能。
具體的使用方法參考專案網站裡的文檔(word 2003格式,中文的,幾乎每個方法都有sample code,代碼裡的注釋都是英文的),這裡大概介紹一下這個庫的作用:
這個JavaScript庫大致分成兩大部分:
第一部分:訪問SharePoint內容
通過AJAX技術(jQuery提供了很方便的跨瀏覽器的AJAX解決方案),調用SharePoint內建的Web Services,讀取、查詢、添加、修改或刪除列表中的條目。此外還支援了對目前使用者的使用者設定檔中各個屬性的讀取(這是某個項目的產物)
比如,下面這段簡短的代碼可以更新myList列表中所有lookup欄位查閱了ID為19的條目的標題(來自文檔):
1: var res = queryItems('myList', "<Where><FieldRef Name='lookup' LookupId='TRUE'/><Value Type='Lookup'>19</Value></Where>", ['ID']);
2: var ids = [];
3: $.each(res.items, function(idx, item){
4: ids.push(item['ID']); // $.each是jquery中的方法,效果類似於C#中的foreach
5: });
6: var updateRes = updateItems('myList', ids, {'Title':'These are items lookup 19!'});
7: alert(updateRes.success);
第二部分:控制SharePoint表單
這個表單指的是列表的建立和編輯表單,支援的欄位類型包括:
單行文本、多行文本(純文字和帶格式的文本)、數字(普通和百分比)、貨幣、選項(下拉式清單、Radio、多選)、查閱項(單選、多選)、時間和日期(僅日期和帶時間)、是/否、人員和組(不完全支援)、超連結、圖片
提供的功能包括:
1、隱藏/唯讀欄位
2、擷取/設定欄位的值
3、級聯兩個選項(下拉式清單)類型的欄位
4、級聯兩個查閱項類型的欄位
5、為查閱項和選項(下拉式清單)提供篩選功能(如果比較多的話選起來會方便很多)
6、從用戶端檢測欄位是否為空白(和欄位的那個設定無關,甚至可以根據某個欄位的設定來決定是否要檢查某些欄位,文檔中有個例子)
7、重定義“確定”和“取消”按鈕的行為
這兩部分內容結合起來,不用任何C#代碼也能夠完成很多操作了。當然,最好對javascript有一定的瞭解(不需要對jQuery有瞭解,當然瞭解更好)。
文檔中的兩張圖(查閱項欄位的級聯和篩選):
唯讀部分欄位的效果:
如果有任何問題或者建議的話可以在blog上或者codeplex上反饋給我,歡迎試用(已經在IE6/IE7/FF3.0上經過了初步測試)~