【问题标题】:Query External Content Type (External List) with using Data Source Filters - Sharepoint SOAP使用数据源过滤器查询外部内容类型(外部列表) - Sharepoint SOAP
【发布时间】:2013-05-19 01:02:26
【问题描述】:

我将 sharepoint 连接到 sql server db。我根据外部内容类型制作了一个列表。由于数据量,我不得不在添加外部内容类型操作期间添加过滤器参数 - 在列表中。我使用默认值添加通配符和限制过滤器。我在外部内容类型上创建了列表。 我运行默认列表网站。我没有看到任何数据。所以我编辑网页和

        <Method Name="ExternalList">
            <Filter Name="Filter" Value="A*"/>
            <Filter Name="Limit" Value="50"/>
        </Method>

这样就可以了。

我用 C# 写的 wpf 应用程序

            server.Lists client = new server.Lists();
            client.Url = string.Format("{0}/_vti_bin/Lists.asmx", FixUrl("http://server:port/sites/SiteCollecion/"));
            client.Credentials = System.Net.CredentialCache.DefaultCredentials;
         try
            {
                string xmlQueryContent = @"<Query xmlns=""http://schemas.microsoft.com/sharepoint/soap/""></Query>";
                XmlDocument docQuery = new XmlDocument();
                docQuery.LoadXml(xmlQueryContent.ToString());
                XmlNode QueryNode = docQuery.DocumentElement;

                string xmlQueryOptionsContent = @"<QueryOptions></QueryOptions>";
                XmlDocument docQueryOptions = new XmlDocument();
                docQueryOptions.LoadXml(xmlQueryOptionsContent.ToString());
                XmlNode QueryOptionsNode = docQueryOptions.DocumentElement;

                XmlNode clientsNode = client.GetListItems("ExternalList", null, QueryNode, null, null, null, null);
                DataSet clientsListsDataSet = new DataSet();
                XmlReader clientsReader = new XmlNodeReader(clientsNode);
                XmlReadMode oko = clientsListsDataSet.ReadXml(clientsReader);

                Console.WriteLine(clientsNode.InnerText);
                Console.WriteLine(clientsNode.InnerXml);
             }

我得到了 0 行结果。所以没有填充过滤器。 是否可以在 C# 应用程序中设置它们?

连接工作正常,因为当我连接到非外部列表时我得到了结果。

【问题讨论】:

    标签: c# sharepoint sharepoint-2010 sharepoint-designer


    【解决方案1】:

    您可以尝试使用 REST/oData Web 服务来访问列表项,过滤器等功能是 REST/oData 协议的一部分。

    您可以直接从 url 过滤项目和分页,例如:

    /Products?$filter=ID lt 4
    

    代码项目上的 OData 示例

    http://www.codeproject.com/Articles/393623/OData-Services/

    要在 SharePoint 2010 中访问 Rest/oData 服务,请使用 _vti_bin

    /MySite/MySubSite/_vti_bin/listdata.svc/ExternalList
    

    这里有一些关于使用 windows 应用程序的 odata 的文章和博客:

    http://www.c-sharpcorner.com/UploadFile/54db21/insert-data-from-sharepoint-list-using-odata-service/

    http://www.orbitone.com/en/blog/archive/2010/06/09/odata-and-wcf-data-services.aspx

    如果 REST/odata 没有自动开启,你可能需要安装一个小补丁。

    【讨论】:

    • 不幸的是,我无法使用 url /MySite/MySubSite/_vti_bin/listdata.svc/ExternalList 添加引用。我可以为 /MySite/MySubSite/_vti_bin/listdata.svc/ 添加 url,但没有为我的外部列表创建对象。
    • 您好 Paulo,在 Visual Studio 中添加引用之前,先看看您是否可以在浏览器窗口中渲染 xml。我打错了你需要添加完整的 url 路径,例如 [domain/sites/_vti_bin/listdata.svc/listname]
    • 这不适用于外部列表。它是一种特定的获取方式吗?
    • 是的,你的权利!我测试了外部列表不会通过 odata 公开,如果 odata 是这种情况,它可能与 asmx Web 服务相同。如果它是一个 wpf 应用程序,为什么不直接建立与数据库的连接?
    猜你喜欢
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    相关资源
    最近更新 更多