为什么CAML不返回sharepoint列表中的所有字段/值?

本文关键字:字段 CAML 返回 sharepoint 列表 为什么 | 更新日期: 2023-09-27 18:15:56

我有一个Sharepoint列表,其中有如下列:公司名称,Add1, Add2国家,州/省。State/Province只有当country选择为America或Canada时才有条件输入,所以SharePoint中很少有记录将这个字段(ows_State)为空。

现在我试图使用webservices, CAML查询从SharePoint获取记录,我面临的问题是,如果字段(状态/Provice)是空的,那么CAML没有得到它的信息,事实上字段名称本身没有添加在XML的z:row元素中。我有这个字段绑定到gridView的前端(作为Eval),如果元素ows_State没有在XML中找到,那么它抛出错误。

任何建议都将非常感谢,

如果没有工作,那么我可能不得不检查并动态添加这个字段。

var StateElement = doc.Element(rs + "data").Element(z + "row").Attribute("ows_State_x002f_Province");
                if (StateElement == null)
                {
                    doc.Element(rs + "data").Element(z + "row").Add(new XAttribute("ows_State_x002f_Province", " "));
                }

为什么CAML不返回sharepoint列表中的所有字段/值?

我也有过类似的问题。问题是,如果字段为空,CAML将不会在XML中返回该字段。

我的解决方案是检查XML是否存在属性,如果不存在,则手动添加。

看看这个:

http://naimishpandya.wordpress.com/2011/11/15/how-to-add-xml-attribute-to-an-existing-xml-node-in-c-c-sharp/

也可以通过LINQ To XML实现。

http://social.msdn.microsoft.com/forums/en us/xmlandnetfx/thread/be75108d - 2265 - 41 - f0 - 8 a22 - f2ecc025cf53

foreach(XElement zrow in doc.Root.Elements(z + "row").Where(u => u.Attribute("ows_State_x002f_Province")==null).ToList()) 
{ 
     zrow.Add(new XAttribute("ows_State_x002f_Province", " ")); 
}