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

时间:2011-11-27 11:41:42

标签: c# linq web-services sharepoint caml

我有一个Sharepoint列表,其中包含以下列:CopmanyName,Add1,Add2 Country,State / Province。只有当国家/地区被选为美国或加拿大时,州/省才有条件进入,因此SharePoint中很少有记录将此字段(ows_State)视为空。

现在我正在尝试使用webservices,CAML查询从SharePoint获取记录,我面临的问题是,如果字段(State / Provice)为空,则CAML不会获取其信息,事实上字段名称本身未添加到XML的z:row元素中。 我将此字段绑定到前端的gridView(作为Eval),如果在XML中找不到元素ows_State则会抛出错误。

非常感谢任何建议,

如果没有任何作用,那么我可能需要检查并动态添加此字段。

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", " "));
                }

2 个答案:

答案 0 :(得分:1)

我遇到过类似的问题。问题是,如果您的字段为空,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-41f0-8a22-f2ecc025cf53

答案 1 :(得分:0)

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", " ")); 
}