【问题标题】:Sharepoint List Items QuerySharepoint 列表项查询
【发布时间】:2014-02-17 07:53:09
【问题描述】:

如何在 c# 中使用soap 查询共享点列表项? 应该查询数据的代码将放置在一台主机上(sharepoint 2007,.net 2.0)。位于另一台主机上的列表 (Sharepoint 2010)。 据我所知,我不能为此目的使用 SPSite、SPWeb..

using(SPSite site = new SPSite("http://hostname/...")) {
  using(SPWeb web = site.OpenWeb()) {
     ...

谁能给我一个例子来说明如何做到这一点? 天呐!

【问题讨论】:

  • 请看我的回答。

标签: c# asp.net .net sharepoint soap


【解决方案1】:

要在两个不同的共享点实例之间进行集成,您必须使用共享点网络服务。

  1. 在您的项目中创建对以下 url 的 Web 引用:http://sharepointserver/_vti_bin/lists.asmx

  2. 创建到网络服务的连接:

    var client = new SharePointWebServices.Lists { Credentials = new NetworkCredential("username", "password") };
    var xmlDoc = new XmlDocument();
    var viewFields = xmlDoc.CreateElement("ViewFields");
    viewFields.InnerXml = "<FieldRef Name=\"ows_FIELD YOU WISH TO RETRIEVE\" />";
    var listGuid = ConfigurationManager.AppSettings["GUID_OF_LIST"];
    XmlNode listItems = client.GetListItems(listGuid, null, null, viewFields,
                                                    null, null, null);
    
  3. 现在您已收到您的收藏。只需遍历从 web 服务检索到的 xmlDoc。我这样做:

    foreach (XmlNode node in listItems)
    {
       if (node.Name == "rs:data")
       {
          for (int f = 0; f < node.ChildNodes.Count; f++)
          {
             if (node.ChildNodes[f].Name == "z:row")
             {
                var xmlAttributeCollection = node.ChildNodes[f].Attributes;
                if (xmlAttributeCollection != null)
                {
                    string listItem = xmlAttributeCollection["ows_ows_FIELD YOU WISH TO RETRIEVE"].Value;
                }
             }
          }
       }
    }
    

【讨论】:

  • 这有帮助吗?
  • 很高兴能帮上忙。
  • 根据我的经验,viewFields也可以是null
【解决方案2】:

您可以使用SharePoint soap web services。或者,如果您从 SharePoint 2010 获取数据,您可以使用 它的rest api

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    相关资源
    最近更新 更多