在sharepoint的企業應用中,遇到複雜的邏輯的時候,我們會需要多表查詢;sharepoint和sql資料表一樣,也支援多表聯合查詢,但是不像sql語句那樣簡單,需要使用spquery的joins屬性來完成。
下面,我們通過乙個簡單的例子,為大家演示一下如何使用spquery通過查閱項字段來進行兩個列表的聯合查詢。
1、首先建立測試列表,city是城市,然後有乙個列表叫做address,是位址,通過查閱項location進行關聯,cityid欄位是number型別,這裡代表城市的id號;
建立列表完畢以後,輸入一些簡單的測試資料,如下圖:
2、測試列表address,新增乙個查閱項欄位,特別要說的是,截圖勾選了title,後來因為查閱項關聯的就是title,我就去掉了,希望不要對後來造成誤會,如下圖:
3、檢視建立完畢列表的所有欄,如下圖:
4、看著location:cityid這樣的名稱不是很舒服,索性點進去,改名,如下圖:
5、如下圖,便是我們建立完畢的測試列表,包含簡單的測試資料:
6、建立乙個控制台程式,引用microsoft.sharepoint.dll,編寫測試**,因為控制台程式的建立過程非常簡單,這裡只貼了核心**,如下:
17、執行控制台程式,下面是查詢的結果,如下圖:using (spsite site = new
spsite(siteurl))229
}30 }
到這裡,大家可能會有疑問,這樣的查詢,和列表的查詢是一樣的,怎麼叫做多列表聯合查詢呢?下面請繼續,聽我慢慢道來;
8、我們在列表city裡多新增一列,名稱暫且叫做mark,但是不將其作為查閱項關聯到address列表,如下圖:
address列表所有欄屬性,並不包含mark,如下圖:
9、同時為**的projectedfields多新增mark的字段屬性,如下圖:
query.projectedfields =10、同時為顯示屬性加入custommark欄位,如下圖:"";
query.viewfields = "輸出新增custommark欄位的值,如下:" + "
" + "
" +"";
spfieldlookupvalue custommark = new spfieldlookupvalue(item["11、再次執行控制台程式,並沒有以查閱項關聯到address的mark欄位,也被查詢出來了,也就是我們說的多表聯合查詢,如下圖:custommark
"].tostring());
console.writeline(
"custommark:
" + custommark.lookupvalue)
總結
以上內容,就是本文的全部內容,sharepoint多表查詢,通過查閱項欄位進行關聯,然後使用spquery的joins屬性進行關聯查詢,通過設定關聯的字段和需要顯示的字段來設定顯示,完成關聯查詢。
附:列表結構
列表一:city
字段:title(預設字段,單行文字,作為address關聯的查閱項)
cityid(數字型別,作為address關聯的查閱項)
mark(單行文字,作為多表查詢的測試字段)
列表二:address
字段:title(預設)
location(查閱項,關聯city列表的title)
customcityid(查閱項,關聯city列表的cityid)
附:參考鏈結
SharePoint 2013 的新特性
1.sharepoint 2013將會包含新的sharepoint應用商店 2.新的應用商店provider 應用包可以被配置成使用任何後台資料庫,只要它支援新的資料庫提供者介面 3.sharepoint應用將支援多租戶的安裝,使得hosting提供商能夠提供給多使用者可用的相同的應用集 4.sha...
SharePoint 2013 同步FBA認證使用者
sharepoint 開啟了基於fba的身份認證,經常會遇到使用者組使用者的問題,當我加入乙個ad賬號,無法同時加入form認證的使用者,這時,只能手動新增,比較麻煩 所以,寫了乙個服務,用來每天晚上同步一下使用者組中的ad賬號和form賬號。原理 原理比較簡單,就是遍歷使用者組的所有使用者,同步的...
SharePoint 2013 禁用搜尋服務
前言,在sharepoint2013中,對於硬體需求的提公升,讓我們虛機裡安裝總是一籌莫展,尤其開啟了搜尋服務以後,對於記憶體的消耗就更加嚴重,尤其對於我們開發者來說,搜尋服務並不是必須開啟的,所以,我們需要禁用掉不需要的服務,來減輕開發環境的壓力.首先對比一下是否開啟搜尋對於伺服器記憶體的壓力 特...