SharePoint發行版本有SharePoint2003、SharePoint2007、Sharepoint 2010、SharePoint2013和SharePoint2016。SharePoint提供了功能強大的團隊協作環境,使得組織能夠在整個組織內部實現整合、組織、查找和提供 SharePoint站點。 在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,編寫測試代碼,因為控制臺程序的創建過程非常簡單,這里只貼了核心代碼,如下: ![]() 1 using (SPSite site = new SPSite(SiteUrl)) 2 { 3 using (SPWeb web = site.RootWeb) 4 { 5 SPQuery query = new SPQuery(); 6 //Joins屬性,這里有INNER和LEFT兩種方式連接,均可查詢,而且支持多表連接; 7 query.Joins = " ![]() 7、執行控制臺程序,下面是查詢的結果,如下圖: 到這里,大家可能會有疑問,這樣的查詢,和列表的查詢是一樣的,怎么叫做多列表聯合查詢呢?下面請繼續,聽我慢慢道來; 8、我們在列表City里多添加一列,名稱暫且叫做Mark,但是不將其作為查閱項關聯到Address列表,如下圖: Address列表所有欄屬性,并不包含Mark,如下圖: 9、同時為代碼的ProjectedFields多添加Mark的字段屬性,如下圖: query.ProjectedFields =" 10、同時為顯示屬性加入CustomMark字段,如下圖: query.ViewFields = " 輸出添加CustomMark字段的值,如下: SPFieldLookupValue CustomMark = new SPFieldLookupValue(item["CustomMark"].ToString());Console.WriteLine("CustomMark:" + CustomMark.LookupValue) 11、再次執行控制臺程序,并沒有以查閱項關聯到Address的Mark字段,也被查詢出來了,也就是我們說的多表聯合查詢,如下圖: 總 結 以上內容,就是本文的全部內容,SharePoint多表查詢,通過查閱項字段進行關聯,然后使用SPQuery的Joins屬性進行關聯查詢,通過設置關聯的字段和需要顯示的字段來設置顯示,完成關聯查詢。 本例是使用列表City和Address進行關聯查詢,查詢Address列表通過查閱項關聯查詢City列表;列表結構附后,好了,就到這里吧,希望本文能夠帶給需要的人以幫助,謝謝! 附:列表結構 列表一:City 字段:Title(默認字段,單行文本,作為Address關聯的查閱項) CityID(數字類型,作為Address關聯的查閱項) Mark(單行文本,作為多表查詢的測試字段) 列表二:Address 字段:Title(默認) Location(查閱項,關聯City列表的Title) CustomCityID(查閱項,關聯City列表的CityID) Sharepoint 可以幫助企業用戶輕松完成日常工作。 |
溫馨提示:喜歡本站的話,請收藏一下本站!