【问题标题】:Reading existing field value from SharePoint Custom List fails从 SharePoint 自定义列表读取现有字段值失败
【发布时间】:2015-06-21 09:01:14
【问题描述】:

我正在尝试读取 SharePoint 自定义列表中特定字段的值。

自定义列表具有以下字段:Field1、Field2 和 Field3

当我调用下面的代码时:

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”。如果是怎么办?

【问题讨论】:

    标签: c# sharepoint sharepoint-2013


    【解决方案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;
            }
    

    【讨论】:

      猜你喜欢
      • 2018-02-08
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多