2011-09-29 152 views
0

由於備份原因(有點像來自Metavis的filemanager),我正在構建Sharepoint 2010導出工具。獲取listItem.fieldValues的列表客戶端對象模型Sharepoint 2010

將文件下載到本地磁盤時,我需要備份與文檔關聯的元數據。我將存儲在一個CSV文件中。我的第一種方法是迭代所有listItem.fieldvalues,但這並不真正有效,因爲某些字段值是複雜的類型,這會不必要地使備份文件複雜化。有些值甚至包含行結尾,例如「MetaInfo」。此外,在可能需要時,並非所有值都需要恢復內容。

所以我的想法是隻獲得Fieldvalues集合中需要做的功能恢復的值,並補充所有用戶添加的元數據。

爲此,我想檢查排除列表中的所有字段值以查看它是否存在。如果存在,請不要備份。如果它是用戶生成的元數據或我需要的值,例如「author」,「created」。

所以我的問題是,有人知道所有fieldvalues鍵的列表? 還是有更好的方法來解決我的問題?

感謝

更新:嗯,因爲我是通過FieldValues收集任何方式進行迭代。將所有值轉儲到CSV很容易。運行一次就足以獲得所有的值。現在我需要寫的是一個用於配置的xml文件。這留下了一個問題:有沒有更好的方法來做到這一點?

回答

0

我已經完成申請。正如我在更新中所寫的,我通過將所有fieldValues導出到CSV文件來製作一個列表。之後,我製作了一個帶有布爾型「備份」的配置文件。這使得可以控制進行備份時要使用哪些值。

我回想起我認爲不需要配置文件。備份時使用的值是整個程序的一部分,配置文件爲管理員或未來的開發人員提供了一種簡單的重新配置將滿足需求的印象。

我現在可以看到,如果程序需要改變,由於新的要求,代碼必須改變。所以即使將值設置爲'True'也會改變輸出。其他一些代碼也必須寫入。如果我再次寫它,我可能會使用常量。這使得它不那麼充滿活力,但仍能滿足該計劃的需求。

(順便說一句,關於標準fieldValues的所有名字的列表本來是很好的開始,我會在這裏發佈它,但我無法再訪問該文件,因爲我最近更換了作業。)

1

通過使用System編寫以下代碼 來過濾列表字段; using Microsoft.SharePoint.Client;

clientContext.Load(
     listItems, 
     items => items 
      .Include(
       item => item["Title"], 
       item => item["Category"], 
       item => item["Estimate"])); 

來源:http://msdn.microsoft.com/en-us/library/ee857094.aspx#SP2010ClientOM_Creating_Windows_Console_Application

您可以創建與各個領域的看法,使用SharePoint對象模型得到的觀點,並從收集得到的列名,並將其過濾按您的要求。

+0

我確實使用了客戶端對象模型。據我可以從你的代碼片段判斷,仍然需要一些配置;當用字符串檢索項目時,必須以某種方式知道該字符串。這讓我們回到了開始。如何知道所有的價值? – Sigur

相關問題