2015-06-21 61 views
0

我正在嘗試讀取SharePoint自定義列表中特定字段的值。從SharePoint自定義列表中讀取現有字段值失敗

自定義列表具有以下字段:字段1,字段2和字段3

當我調用代碼如下:

public static string GetLastTargetColumnValue(string sharePointSiteUrl, string sharePointListName, string targetColumnName) 
     { 
      string targetColumnValue = string.Empty; 
      using (var clientContext = new ClientContext(sharePointSiteUrl)) 
      { 
       clientContext.Credentials = new NetworkCredential("userName", "password"); 
       var list = clientContext.Web.Lists.GetByTitle(sharePointListName); 
       var query = CamlQuery.CreateAllItemsQuery(100); 
       var items = list.GetItems(query); 
       clientContext.Load(items); 
       clientContext.ExecuteQuery(); 
       var listItem = items.Last(); 
       foreach (var fieldValue in listItem.FieldValues) 
       { 
        Console.WriteLine(fieldValue.Key + ":" + fieldValue.Value + Environment.NewLine); 
       } 
      } 
      targetColumnValue = listItem[targetColumnName] as string; 
      return targetColumnValue; 
     } 

的錯誤信息是: 附加信息:屬性或字段具有未被初始化。它沒有被請求或者請求沒有被執行。可能需要明確要求。

在foreach中顯示的字段顯示「Field1」和「Field2」。我必須明確要求「Field3」嗎?如果是的話如何?

回答

1

由於某種原因,我必須在查詢值之前獲取內部名稱。這裏是工作的代碼:

public static string GetLastTargetColumnValue(string sharePointSiteUrl, string sharePointListName, string targetColumnName) 
     { 
      string targetColumnValue = string.Empty; 
      using (var clientContext = new ClientContext(sharePointSiteUrl)) 
      { 
       clientContext.Credentials = new NetworkCredential("userName", "password"); 
       var list = clientContext.Web.Lists.GetByTitle(sharePointListName); 

       var field = list.Fields.GetByInternalNameOrTitle(targetColumnName); 
       var textField = clientContext.CastTo<FieldText>(field); 

       var query = CamlQuery.CreateAllItemsQuery(100); 
       var items = list.GetItems(query); 

       clientContext.Load(textField); 
       clientContext.Load(items); 
       clientContext.ExecuteQuery(); 

       var listItem = items.Last(); 
       targetColumnValue = listItem[textField.InternalName] as string; 
      } 
      return targetColumnValue; 
     } 
相關問題