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

发布于 2024-12-18 16:59:26 字数 692 浏览 2 评论 0 原文

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

现在我尝试使用 Web 服务、CAML 查询从 SharePoint 获取记录,我面临的问题是,如果字段(州/省)为空,则 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", " "));
                }

I have a Sharepoint list which have columns like : CopmanyName, Add1, Add2 Country, State/Province. State/Province have a condition to enter only when country is as selected as America or Canada, So few records in SharePoint have this field(ows_State) as empty.

Now I am trying to get the records from SharePoint using webservices, CAML query, the problem that I am facing is that if the field (State/Provice) is empty then the CAML doesn't get its information, in-fact the field name itself is not added in the z:row element of XML.
I have this field bound to a gridView on front-end (as Eval) and if element ows_State is not found in XML then it throws error.

Any suggestion would be much appreciated,

If nothing works then probably I'll have to check and dynamically add this field.

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

断念 2024-12-25 16:59:26

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

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

看看这个:

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

也可以通过LINQ To XML来实现。

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

I have had similar problem. The thing is, If your field is empty, CAML won't return you that field in your XML.

The solution I made was to check XML for attribute's existence, If it's not there, add it manually.

Check this out :

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

You can also achieve it through LINQ To XML.

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

傲娇萝莉攻 2024-12-25 16:59:26
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", " ")); 
}
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", " ")); 
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文