我走到這一問題和谷歌似乎永遠不知道自己想做什麼, 所以這記.
我做了很多調試中的最後一周或兩個事件接收器. 二被定義對文件庫. 在文件庫中的個別專案密切應用到其父資料夾. 所以, 我總是該專案的資料夾用於各種操作. 在調試時, 我需要更新我知道其 ID 的特定項的資料夾的中繼資料.
這裡是一個小的主控台應用程式 (在伺服器場中的伺服器上運行而設計) 採用兩個參數的: 要分配給欄位的項和值的 ID, "審批狀態". 它硬式編碼東西很多並沒有任何錯誤檢查.
代碼查找一個硬式編碼網站, 獲取一個硬式編碼文件庫,然後查閱資料表示的專案. 它發現該專案的父資料夾中,然後賦值狀態.
在這裡對我來說重要的教訓是 SPItem 不讓您可以訪問該資料夾. 您需要使用 SPListItem.File.
如果沒人願意提供批判或建議更好的方法獲取專案的資料夾, 請留下評論.
<代碼>
使用 系統; 使用 System.Collections.Generic; 使用 System.Text; 使用 Microsoft.SharePoint; 使用 System.Collections; 命名空間 Conchango { /// <摘要> /// </摘要> 類 ManualFolderUpdate { 靜態 無效 主要(字串[] args) { 字串 msh = "ManualFolderUpdate (v1.0): "; // msh ="消息標題" 主控台.應使用 WriteLine(msh + "啟動. 我上次修改日期 08/8/4。"); 字串 url = http://localhost/xyzzy; 使用 (SPSite oSPSite = 新增功能 SPSite(url)) { 使用 (SPWeb oSPWeb = oSPSite.OpenWeb()) { SPList 文件庫 = oSPWeb.Lists["檔"]; 主控台.應使用 WriteLine(msh + "有的文件庫。"); 主控台.應使用 WriteLine(msh + "Doc lib 專案計數: [" + docLib.ItemCount + "]."); int 資料夾 Id = 0; 字串 NewStatus = "xyzzy"; 資料夾 Id = 系統.轉換.ToInt32(args[0].ToString()); 主控台.應使用 WriteLine("尋找專案的資料夾: [" + 資料夾 Id + "]."); SPListItem 李 = docLib.GetItemById(資料夾 Id); SPFolder thisItemFolder = 李。File.ParentFolder; 主控台.應使用 WriteLine(msh + "有的父資料夾。"); NewStatus = args[1].ToString(); 主控台.應使用 WriteLine("將狀態設置為 [" + NewStatus + "]."); 主控台.應使用 WriteLine("按回車鍵提交更新或 CTRL C,以中止。"); 主控台.ReadLine(); thisItemFolder.Item["審批狀態"] = NewStatus; thisItemFolder.Item.Update(); 主控台.應使用 WriteLine(msh + "完成資料夾中的更新. 退出。"); } // 使用 SPWeb } // 使用 SPSite 主控台.應使用 WriteLine(msh + "完成了。"); } // 主要 } // 類 foldersync } // 命名空間
</代碼>
</結束>
Technorati 標籤: SharePoint 程式設計