SharePoint Server 2010 物件模型 -- 清單處理

Slides:



Advertisements
Similar presentations
Web Role 的每台虚机运行有 IIS ,用于处理 Web 请求 Worker Role 用于运行后台进程 Cloud Service 是什么? 支持多层架构的应用容器 由多个 Windows 虚拟机集群构成 集群有两种类型: Web 和 Worker Cloud Service 做什么 进行应用的自动化部署.
Advertisements

应用技术 陕西华辉科技有限公司.
泛舆情管理平台 ——助力媒体业务创新 新模式 新格局 创新盈利增长点 2/26/2017 1:59 AM 屈伟: 创始人,总裁
中国银行业前置端操作系统移植研究.
3/3/ :01 PM © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
请点击以下链接下载WinHEC的演讲材料
借助公有云实现游戏的弹性运营 Shaun Fang (方兴) Azure开发技术顾问
Windows Hyper-V与集群共享卷
Customer Service & Support
请点击以下链接下载WinHEC的演讲材料
Eliyas Yakub 首席开发经理 US-Device & Storage
1. 设定愿景,确定业务场景 Microsoft Corporation
广东省广州市花都区教育局教研室 汤少冰 优化评估方式, 促进中学英语的教与学 广东省广州市花都区教育局教研室 汤少冰
張書源 Microsoft MVP MCT 趨勢科技 技術經理 網酷科技 資深顧問 集英信誠 資深顧問
Office 2013 全新功能介紹 台灣微軟 Office 大使 楊承恩 Marcus Microsoft Office
講師姓名:黃信嘉、黃振宇 職稱:微軟技術支援副理 公司名稱:台灣微軟 課程代碼:WCL305
四川省集体林权流转平台 中国西部林权交易网
全国信息技术标准化技术委员会 (SAC/TC28)工作交流
Windows 10 混合现实 Mingfei Yan 高级项目经理
MBL 340 Tablet PC SDK:在您的应用程序中使用数字墨水
資料檔案的安全性管理 羅英嘉 2007年4月.
今天很高兴能够利用Web Cast和大家讲解嵌入式XP的新增功能。
什麼是電子軟體下載 Electronic Software Download (ESD).
OFC 302 InfoPath2007新特性及解决方案.
最新 Windows Server 徽标 要求和计划
Windows Mobile 轻松接轨GPS
Microsoft Office SharePoint Server 2007 事件追蹤與專案管理
SOLUTIONACCELERATORS Windows Vista Hardware Assessment 1
MSG 321 统一消息架构和PBX集成.
朝雲端專業DBA邁進: 深入剖析 Windows Azure SQL Database 完整資料庫管理、雲端報表建立、建置分散式雲端資料庫
利用最新Hyper-V Replica 功能達成Hyper-V 災難備援機制
Windows Server 2008 NAP整合802.1x網路安全控管
互聯網安全資訊 助您達至更安全的網上體驗.
服務啟用、導入流程、 郵件移轉步驟簡介 Microsoft Office 12/2/2018
MBL 325 开发跨平台的 Windows Mobile应用程序
MBL 327 Windows Mobile开发中的异构系统集成
Cameron Brodeur Program Manager US-Device & Storage PM
David Edfeldt Senior Program Manager Windows Logo Program
构建 Windows TV Tuner 产业 生态环境的重要观点
微软新一代云计算 面向企业的 Office 365 客户培训大纲
1/2/ :39 PM 讀經 以弗所書 4:31-32 © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may.
SharePoint Server 2010 軟體開發架構與開發入門
使徒行傳 21:17-23章「保羅的見證(一)」 引言 預言保羅為主的名受許多的苦難的實現
超完美整合 SQL Server 2008 MOSS 2007 及 Excel 2007 打造好用又省錢的 企業商業智慧解決方案
2/24/2019 5:40 AM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
Exchange 2007 系統部署 -- 儲存預測與測試
教师课堂教学能力提升培训 ---“互联网+教育”考勤小测验 Plickers 洛阳理工学院
Microsoft SQL Server 2008 報表服務_設計
利用 ASP.NET MVC 提升您的 Web 應用程式


橫跨電腦、手機與軟體的全方位端點管控解決方案
请点击以下链接下载WinHEC的演讲材料
CON223 UDDI:服务的发现和搜索.
呂政周 精誠恆逸教育訓練處 資深講師 Windows PowerShell 呂政周 精誠恆逸教育訓練處 資深講師
使用WPF创建Windows应用和Web应用
4/30/2019 7:40 AM 約翰福音 15:9;17:20-23 加拉太書 6:1-2 © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product.
DEV 343 VS2005超快速开发方案/EEP2006控件包.
5/4/2019 4:42 PM © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
使徒行傳 24-26章 [ 保羅的見證(二)] 徒9:15 “  主 對 亞 拿 尼 亞 說 、 你 只 管 去 . 他 是 我 所 揀 選 的 器 皿 、 要 在 外 邦 人 和 君 王 並 以 色 列 人 面 前 、 宣 揚 我 的 名 。 ”]
TechEd /6/ :36 PM © 2013 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks.
Windows 徽标计划工具:综述与发展趋势
5/5/2019 7:06 PM 两跨框架梁截面配筋图的绘制 © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may.
百万亿次超级计算机诞生记 姓名 Xiangyu Ye 职务 微软中国技术中心资深HPC顾问 公司 微软中国
5/15/2019 姓名: 公司名称: 云赛空间BP模板 Now let’s take a look at who we are, what we’re doing and why we’re doing it in China... This is an image of a technology.
DEV 343 VS2005超快速开发方案/EEP2006控件包.
MGT 213 System Management Server的昨天,今天和明天
Bob Combs Lead Program Manager Microsoft Corporation
Ron Jacobs 高级技术专员 Microsoft
Windows Workflow Foundation CON 230
Presentation transcript:

SharePoint Server 2010 物件模型 -- 清單處理 Microsoft SharePoint Server 2010 Ignite! 4/19/2019 SharePoint Server 2010 物件模型 -- 清單處理 曹祖聖 台灣微軟資深講師 jimycao@syset.com http://teacher.syset.com MCP, MCP+I, MCSA, MCSE, MCDBA, MCAD, MCSD, MCTS, MCITP, MCPD, MCT, MVP © 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

大綱 清單存取與名命慣例 清單與欄位的定義 清單項目異動 清單項目查詢與 CAML 語法 LINQ To SharePoint 外部內容類型清單存取

大綱 清單存取與名命慣例 清單與欄位的定義 清單項目異動 清單項目查詢與 CAML 語法 LINQ To SharePoint 外部內容類型清單存取

清單與欄位瀏覽 SPList 與 SPListItem 物件 SPSite site = new SPSite("http://pb6440b"); SPWeb web = site.OpenWeb("/"); SPList lst = web.Lists["DemoList"]; foreach (SPListItem item in lst.Items) { string name = (string)item[“MyCol”]; // 取得某欄位的值 listBox1.Items.Add(name); } EnumerateList

清單與欄位存取 – 該用那種名稱 欄位可以使用以下方式存取 Id InternalName (建議方式) Title 例如: cb4d5393-5a97-400b-b900-1b64f3ab7848 永遠不會改變,但是可讀性很差 InternalName (建議方式) 例如: CustomerID 無法透過介面改變,可讀性佳 Title 例如: 客戶編號 可讀性佳,但是網站管理人員可以改變這個名稱,會造成程式找不到項目

清單與欄位命名 如果在建立時就給它中文名字 建議 InternalName 會類似 _x5b78__x751f__x59d3__x540d_ Title 會是中文名字 但是 InternalName 是無法修改的 建議 請先以英文名稱建立清單或欄位 InternalName 會是這個英文名稱 用來存取該清單或欄位 然後再改成中文名稱 Title 會是這個中文名稱

大綱 清單存取與名命慣例 清單與欄位的定義 清單項目異動 清單項目查詢與 CAML 語法 LINQ To SharePoint 外部內容類型清單存取

如何建立清單 SPListTemplateType 列舉代表清單樣版類型 SPSite site = new SPSite("http://pb6440b"); SPWeb web = site.OpenWeb("/"); // 建立一個自訂清單 Guid guid = web.Lists.Add( "MyList", "這是一個測試清單", SPListTemplateType.GenericList ); CreateList

查詢所有清單範本 從 SharePoint 伺服器總管中查詢所有範本

查詢清單範本 查詢現有清單的範本

如何將清單加入快速啓動列 SPWeb 的 Navigation 屬性包含所有連結 每個連結由 SPNavigationNode 來定義 SPSite site = new SPSite("http://pb6440b"); SPWeb web = site.OpenWeb("/"); // 將清單加入快速啓動列 SPList lst = web.Lists["MyList"]; SPNavigationNode node = new SPNavigationNode( lst.Title, lst.DefaultViewUrl); web.Navigation.AddToQuickLaunch( node, SPQuickLaunchHeading.Lists); web.Update(); CreateList

如何加入和移除欄位 SPList 有一個 Fields 屬性 每一個欄位由 SPField 物件來定義 透過 Add 方法來新增欄位定義 Delete 方法可以刪除欄位 SPSite site = new SPSite("http://pb6440b"); SPWeb web = site.OpenWeb("/"); SPList lst = web.Lists["訂單資料"] lst.Fields.Add(“數量”, SPFieldType.Number, true); // 加入欄位 lst.Fields[“數量”].Delete(); // 刪除欄位 ManageColumns

MS Confidential : Beta1 SharePoint Developer Workshop 清單關聯 (查閱欄位)

如何加入查閱欄位 使用 AddLookup 方法加入查閱欄位 SPField 的 LookupField 可以指定要查閱的欄位名稱 // 加入查閱欄位 lst.Fields.AddLookup("Customer", lst.Lists["客戶資料"].ID, true); SPFieldLookup field = (SPFieldLookup)lst.Fields["Customer"]; field.Title = "客戶"; field.LookupField = lst.Lists["客戶資料"].Fields["客戶編號"].InternalName; field.Update(); ManageColumns

如何加入計算欄位 使用 SPFieldType.Calculated 類型的欄位 將計算公式設定在 Formula 屬性中 // 加入計算欄位 lst.Fields.Add("小計", SPFieldType.Calculated, true); SPFieldCalculated fieldTotal = (SPFieldCalculated)lst.Fields["小計"]; fieldTotal.Formula = "=[單價]*[數量]"; fieldTotal.Update(); 公式語法參考: http://msdn.microsoft.com/en-us/library/bb862071.aspx ManageColumns

將欄位加入預設檢視 使用 SPView 物件來定義清單的檢視 SPList 有 Views 集合 DefaultView 是預設檢視 // 將新欄位加入預設檢視 SPView view = lst.DefaultView; view.ViewFields.Add(fieldCustomer); view.ViewFields.Add("單價"); view.ViewFields.Add("數量"); view.ViewFields.Add("小計"); view.Update(); ManageColumns

如何刪除清單 SPList 有兩種刪除的方法 Delete Recycle SPSite site = new SPSite("http://pb6440b"); SPWeb web = site.OpenWeb("/"); SPList lst = web.Lists["MyList"]; lst.Delete(); // 刪除清單 lst.Recycle(); // 丢到資源回收筒 DeleteList

資源回收筒 SPWeb 有一個 RecycleBin 屬性 每一個資源回收筒中的清單或清單項目 SPRecycleBinItem 可以 Restore() 或 Delete() SPSite site = new SPSite("http://pb6440b"); SPWeb web = site.OpenWeb("/"); SPRecycleBinItem item = web.RecycleBin[0]; item.Delete(); // 刪除 item.Restore(); // 還原 ManageRecycleBin

大綱 清單存取與名命慣例 清單與欄位的定義 清單項目異動 清單項目查詢與 CAML 語法 LINQ To SharePoint 外部內容類型清單存取

新增清單項目 使用 SPList 的 Items 屬性的 Add() 方法 查閱的欄位值必須指到所查閱的 SPListItem 最後呼叫 SPListItem 的 Update() 方法 SPListItem item = lst.Items.Add(); item["Title"] = "order-003"; item["Customer"] = web.Lists["客戶資料"].Items[2]; item["UnitPrice"] = 100; item["Quantity"] = 15; item.Update(); AddNewListItem

刪除與異動清單項目 找到要異動的 SPListItem 修改欄位,呼叫 Update() 方法 呼叫 Delete() 方法刪除該筆項目 SPListItem item = web.Lists[“訂單資料"].Items[0]; item["UnitPrice"] = 500; item["Quantity"] = 20; item.Update(); Item.Delete();

MS Confidential : Beta1 SharePoint Developer Workshop 清單欄位格式檢查 清單欄位可以設定唯一性 可以使用公式在輸入時進行檢查 可以自訂錯誤訊息

大綱 清單存取與名命慣例 清單與欄位的定義 清單項目異動 清單項目查詢與 CAML 語法 LINQ To SharePoint 外部內容類型清單存取

查詢清單資料 使用 SPQuery 物件 ViewFields : 定義回傳欄位 Query : 定義查詢與排序條件 RowLimit : 傳回項目數上限 SPList lst = web.GetList("http://pb6440b/Lists/Orders"); SPQuery query = new SPQuery(); query.ViewFields = “…”; // CAML 語法指定回傳欄位 query.Query = “”; // CAML 語法指定查詢與排序條件 SPListItemCollection result = lst.GetItems(query); QueryList

CAML 語法 Collaborative Application Markup Language (CAML) CAML 語法參考: SharePoint 使用這種語法來表示 SPSite 定義 SPList 定義 SPView 定義 SPQuery 定義 … CAML 語法參考: http://msdn.microsoft.com/en-us/library/ms462365.aspx

查詢 CAML 語法 <Where> <And> <Geq> <FieldRef Name="UnitPrice" /> <Value Type="Number">500</Value> </Geq> <Gt> <FieldRef Name="Quantity" /> <Value Type="Number">30</Value> </Gt> </And> </Where>

排序與欄位指定 CAML 語法 排序語法 欄位指定語法 ( ViewFields 屬性 ) <OrderBy> <FieldRef Name='UnitPrice' Ascending='False' /> <FieldRef Name="Quantity" Ascending="True" /> </OrderBy> <FieldRef Name="Title" /> <FieldRef Name="UnitPrice" /> <FieldRef Name="Quantity" />

CAML 語法產生工具 Stramit SharePoint Caml Viewer U2U CAML Query Builder http://spcamlviewer.codeplex.com/ U2U CAML Query Builder http://www.u2u.net/res/Tools/CamlQueryBuilder.aspx

MS Confidential : Beta1 SharePoint Developer Workshop 清單查詢限制 清單有節流功能,如果查詢的結果超過限制時,會產生錯誤 可以使用程式忽略此限制 SPQuery.RequestThrottleOverride SPSiteDataQuery.RequestThrottleOverride 只有具有權限的使用者才可以 透過 Policy 設定 在 MSF 4.0 中 SPListItem 查詢回來的結果 最多 6 個欄位 (例如用 join 查詢) 每列最多 8KB 資料 (不包含附件)

大綱 清單存取與名命慣例 清單與欄位的定義 清單項目異動 清單項目查詢與 CAML 語法 LINQ To SharePoint 外部內容類型清單存取

MS Confidential : SharePoint 2010 Developer Workshop (Beta1) LINQ to SharePoint 不再需要 CAML 語法 … 真是太好了  自動產生 Entity 類別 強式型別查詢,編譯時期型別檢查 支援 Intellisense Microsoft.SharePoint.Linq.dll 封裝 SharePoint 物件模型,Entity 類別會使用

MS Confidential : SharePoint 2010 Developer Workshop (Beta1) 使用 LINQ to SharePoint 建立 Entity 類別 建立 DataContext 撰寫 LINQ 查詢語法

MS Confidential : SharePoint 2010 Developer Workshop (Beta1) 建立 Entity 類別 使用 spmetal 命令列工具 spmetal /web:<網站網址> /code:Lts.cs 將建立出來的程式碼檔加入專案中 LINQ To SharePoint 在執行時期,會將 LINQ 語法轉換成對應的 CAML 語法,然後將 CAML 語法送交 SharePoint 進行查詢

MS Confidential : SharePoint 2010 Developer Workshop (Beta1) 使用具型別資料類別 清單欄位會對應到屬性 非必要欄位以 Nullable<T> 型別的屬性來存取

MS Confidential : SharePoint 2010 Developer Workshop (Beta1) DataContext 物件 使用 DataContext 物件存取 SharePoint 清單資料,類似 LINQ To SQL 的概念 LtsDataContext dc = new LtsDataContext("http://pb6440b"); var result = from o in dc.訂單資料 where o.單價 >= 500 select o; foreach (var obj in result) Console.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}", obj.標題, obj.客戶.客戶名稱, obj.單價, obj.數量, obj.小計); QueryByLinqToSharePoint

MS Confidential : SharePoint 2010 Developer Workshop (Beta1) 清單關連 RelationsOfLinqToSharePoint

MS Confidential : SharePoint 2010 Developer Workshop (Beta1) 新增清單項目 var result = from c in dc.客戶資料 where c.客戶名稱 == "Peter" select c; 客戶資料項目 cust = result.First(); 訂單資料項目 o = new 訂單資料項目(); o.標題 = "order-123"; o.客戶 = cust; o.單價 = 1000; o.數量 = 25; dc.訂單資料.InsertOnSubmit(o); dc.SubmitChanges(); InsertByLinqToSharePoint

MS Confidential : SharePoint 2010 Developer Workshop (Beta1) 修改清單項目 // 訂單數量 >= 20 者,單價打 9 折 var result = from o in dc.訂單資料 where o.數量 >= 20 select o; foreach (var obj in result) { obj.單價 *= 0.9; } dc.SubmitChanges(); UpdateByLinqToSharePoint

MS Confidential : SharePoint 2010 Developer Workshop (Beta1) 刪除清單項目 // 刪除訂單數量 >= 50 的訂單項目 var result = from o in dc.訂單資料 where o.數量 >= 50 select o; foreach (var obj in result) { dc.訂單資料.DeleteOnSubmit(obj); } dc.SubmitChanges(); DeleteByLinqToSharePoint

大綱 清單存取與名命慣例 清單與欄位的定義 清單項目異動 清單項目查詢與 CAML 語法 LINQ To SharePoint 外部內容類型清單存取

External Content Types Office Clients (Rich) 描述外部資料的結構與存取的方法,以及在 SharePoint 中的資料處理方式 BCS External Data Source (Web Service, DB, .Net object, LOB system, Web 2.0 service, etc.) External Content Type (ECT) BCS 透過 ECT 可以將外部資料整合至 SharePoint 或 Office 前端應用程式 SharePoint (Thin)

MS Confidential : SharePoint 2010 Developer Workshop (Beta1) BCS 身份驗驗證 SharePoint 伺服器 行程帳號 模式: PassThrough (使用目前登入使用者) RevertToSelf (使用行程帳號) SSO Authentication (從 Secure Store 取得身份) 應用程式 Credentials Ticket Delegation Token … WebPart BCS 執行時期 VL 使用者登入 Secure Store Service Application Delegated Token SAML Token Credentials Claims Aware Service Web 2.0 Legacy LOB

使用物件模型存取 BCS (1/2) 使用一般存取清單的程式碼來存取 BCS 清單時,會出以下錯誤訊息: 原因是沒有先參考到必要的物件 Web sites, BDC Shared Service, Metadata Catalog, and BDC Remote Offline Runtime

使用物件模型存取 BCS (2/2) 參考: http://msdn.microsoft.com/en-us/library/ff464357.aspx SPSite site = new SPSite("http://pb6440b"); SPServiceContext context = SPServiceContext.GetContext(site); SPServiceContextScope contextScope = new SPServiceContextScope(context); SPWeb web = site.OpenWeb("/"); SPList lst = web.Lists["北風客戶"]; AccessBCS

4/19/2019 ©2009 Microsoft, Microsoft Dynamics, the Office logo, and Your potential. Our passion. are trademarks of the Microsoft group of companies. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.