天天看點

SharePoint 2013 擴充查閱項功能

  SharePoint 2013的查閱項功能,就是可以擴充其他清單字段為目前清單選項,但是選項太多的時候,會造成選擇起來非常麻煩,是以,我們采取JS+Ajax的方式,改善一下這個展示,使操作更加友善。

展現效果

  如下圖,當我在Textbox裡輸入北京,會把北京開頭的選項,加載到下拉選項中,如果什麼都不輸入,就是全部下拉選項,這樣比較友善選項多的時候,進行篩選選擇;

SharePoint 2013 擴充查閱項功能

原理介紹

1、 使用JS隐藏原來的Select控件;

  使用F12檢視Select的Html代碼,發現有Title是字段名,還有id屬性,而option的value就是該item的id,是以,我們可以使用JS來操作這個select,如下圖;

SharePoint 2013 擴充查閱項功能

  隐藏Select的JS腳本,就是擷取所有的select控件對象,然後找到title相符合的,當然你也可以根據id來擷取,id的格式應該是内部字段名稱+清單GUID+字段類型辨別,看你的習慣了,附JS腳本如下:

2、 使用JS在原來Select位置下面,添加一個Text類型Input,輸入文字;

  這一步主要是在找到的select節點以後,使用parentNode找到父節點,然後在父節點的innerHTML裡加入我們需要的Input,JS腳本附後:

3、 添加下拉菜單;

  以下主要就是你JS腳本,放在頁面上就可以,沒有什麼特别需要說明的地方。當然,我們可以在相關事件上,添加我們需要的代碼段。

特别:這些腳本是百度上查到的,但是他也是轉載,沒有原文連結,是以沒有附後;

<!--隐現層的函數-->

<!--滑鼠移上id為oOption的對象時執行本段代碼-->

<!--滑鼠從id為oOption的對象上移開時執行本段代碼-->

<!--id為oOption的對象被單擊時執行本段代碼-->

4、 寫Ajax根據Input的值變化,更新下面的下拉結果;

<!—Ajax更新方法,将更新的Table放到Id為oOption的div裡-->

<!—監視Input值變化,如果變化則執行ajax方法更新下拉清單-->

  這個方法利用Input的onpropertychange事件,但是這個時間每有一個鍵盤動作,就會執行一次,是以我用一個隐藏域存上一次的Value的Length,和這一次比較,不一樣的話執行Ajax事件,否則就當做輸入但是Input域的Value值并沒有變化。

5、 開發一個Ajax通路的頁面,傳回相關結果;

  這個方法沒有太多要說明的,記得提升權限;利用Caml語句,擷取與傳入值比對的項目集合,拼成Table傳回,提供Ajax使用。

SharePoint 2013 擴充查閱項功能
SharePoint 2013 擴充查閱項功能

View Code

總 結

  整個功能的原理如上所示,利用JS替換頁面的标簽,變為自己的Input+下拉清單(div模拟),并監聽Input的值變化,變化時通過Ajax更新div下拉清單,選擇下拉清單,更新Input同時使用JS腳本更新隐藏的自帶查閱項的Value值,完成我們的效果。

  功能十分簡單,代碼段也沒有難度,就是簡單介紹的一個小例子,給有相關需求的人一個參考;也算自己對于SharePoint 2013裡使用Ajax的一個練習吧,希望在實踐中提高自己的能力。

附 錄

Ø 完整的Ajax執行個體

http://www.cnblogs.com/oneword/archive/2011/06/04/2072558.html

Ø 使用div 模仿下拉框

http://hi.baidu.com/wangtanbao/item/6debfe0f6ae8ab21a0312d27

繼續閱讀