客户端对象模型查询为FieldValue返回null

时间:2010-10-25 21:13:39

标签: sharepoint-2010

我正在尝试使用客户端对象模型从列表中查询数据。一切都在起作用,除了神秘的一个特定的领域不是。它们都以相同的方式被拉(大多数情况下),我可以去查看列表,看清楚该字段中是否有数据,但它只是没有被返回。这里有什么我想念的吗?是否有某种不同类型的字段设置可能导致这种情况(这只是一个文本字段btw)?

   HostWeb = Context.Web;
    Context.Load(HostWeb, w => w.Lists);

    //Load The Drop off box documents list
    DropOffBox = HostWeb.Lists.GetByTitle("Drop-off Box");
    Context.Load(DropOffBox);

    CamlQuery DropOffQuery = new CamlQuery();
    DropOffQuery.ViewXml = "<View><Query><OrderBy><FieldRef Name='Number' /></OrderBy></Query></View>";

    DropOffItems = DropOffBox.GetItems(DropOffQuery);
    Context.Load(DropOffItems, items => items.Include(i => i.DisplayName, i => i["ows_Modified"], i => i["Recipient"], i => i["Url"],
        i => i["Location"], i => i["Number"], i => i.Id));
    Context.ExecuteQuery();

    foreach (ListItem Item in DropOffItems)
    {
        FilerDocument Doc = new FilerDocument(Item.DisplayName, DateTime.Parse(Item["ows_Modified"].ToString()), (Item["Recipient"] ?? "").ToString(),
           Item["Url"].ToString(),Item.Id.ToString(), _serverName);

        Doc.FiledUrl = (Item["Location"] ?? "").ToString();
        Doc.Number = (Item["Number"] ?? "").ToString();

        Doc.PropertyChanged += new PropertyChangedEventHandler(Document_PropertyChanged);
        DropOffDocs.Add(Doc);
    }

失败的部分是“数字”字段。所有其他字段都可以正常工作,包括以相同的方式访问的位置,并且来自相同的内容类型。

2 个答案:

答案 0 :(得分:0)

也许是一个愚蠢的问题,但你没有在OP中提及:你是否仔细检查了相关字段的内部列名是否真的命名为“Number”?客户端和服务器对象模型按其内部名称对列表字段进行地址,而不是(必然)按显示的字段名称。


更新:我建议您获取U2U's CAML Query Builder的副本。获取2007版本并通过SharePoint Web服务连接到您的2010实例。它将允许您为特定列表生成CAML查询,方便的部分是您选择您感兴趣的字段,并使用内部名称自动填充查询。

答案 1 :(得分:0)

您是否尝试在不使用DropOffItems的情况下加载Include()