我有一个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", " "));
}
答案 0 :(得分:1)
我遇到过类似的问题。问题是,如果您的字段为空,CAML将不会返回XML中的该字段。
我做的解决方案是检查XML是否存在属性,如果不存在,请手动添加。
检查出来:
您也可以通过LINQ To XML实现它。
答案 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", " "));
}