使用SharePoint web服务中的ViewFields返回特定列

本文关键字:返回 ViewFields SharePoint web 服务 使用 | 更新日期: 2023-09-27 18:27:35

我正在使用CAML通过web服务查询SharePoint列表,并将其输出到C#/ASP.Net中的GridView。我遇到的问题是,显示的列比我在查询的"ViewFields"部分指定的列多(例如,如下所示)。

viewFields.InnerXml = "<ViewFields>" +
                      "<FieldRef Name="Col1" />" +
                      "<FieldRef Name="Col2" />" +
                      "<FieldRef Name="Col3" />" +
                      "<FieldRef Name="Col4" />" +
                      "</ViewFields>";

我已尝试在"QueryOptions"中设置为false。

有人能为这个问题提供任何解决方案,以便只返回指定的列吗?

使用SharePoint web服务中的ViewFields返回特定列

这是为了帮助那些正在寻找这个问题答案的人,我们发现最有效的解决方案是:

我们从这里得到了节点的想法:如何在使用SharePoint Web服务时只返回列表的某些列?

然后,我们完成了将我们想要的字段提取到数据表中的过程。首先,我们为字段创建适当数量的列。然后通过子节点提取所有的行数据。为我们请求的每个字段执行此操作。

  var myData = new DataTable();
        foreach (string field in fields)
        {
            myData.Columns.Add(field);
        }
        foreach (XmlNode node in nodeListItems)
        {
            // rs = RowSet
            if (node.Name == "rs:data")
            {
                for (int i = 0; i < node.ChildNodes.Count; i++)
                {
                    if (node.ChildNodes[i].Name == "z:row")
                    {
                        DataRow row = myData.NewRow();
                        foreach (string field in fields)
                        {
                            var xmlAttributeCollection = node.ChildNodes[i].Attributes;
                            if (xmlAttributeCollection != null)
                                row[field] = xmlAttributeCollection["ows_" + field].Value;
                        }
                        myData.Rows.Add(row);
                    }
                }
            }
        }
        return myData;