我有一个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将不会在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", " "));
}