C# 使用数据源筛选器-Sharepoint SOAP查询外部内容类型(外部列表)

C# 使用数据源筛选器-Sharepoint SOAP查询外部内容类型(外部列表),c#,sharepoint,sharepoint-2010,sharepoint-designer,C#,Sharepoint,Sharepoint 2010,Sharepoint Designer,我将sharepoint连接到sql server数据库。我根据外部内容类型制作了一个列表。由于大量数据我不得不在添加外部内容类型操作时添加过滤器参数-在列表上。我使用默认值添加通配符和限制过滤器。我创建了关于外部内容类型的列表。 我运行默认列表网站。我没有看到任何数据。所以我编辑网页并 <Method Name="ExternalList"> <Filter Name="Filter" Value="A*"/>

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

        <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);
             }
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;
尝试
{
字符串xmlQueryContent=@”;
XmlDocument docQuery=新的XmlDocument();
LoadXml(xmlQueryContent.ToString());
XmlNode QueryNode=docQuery.DocumentElement;
字符串XmlQueryOptions内容=@“”;
XmlDocument docQueryOptions=新的XmlDocument();
加载XML(xmlQueryOptions内容.ToString());
XmlNode QueryOptionsNode=docQueryOptions.DocumentElement;
XmlNode clientsNode=client.GetListItems(“外部列表”,null,QueryNode,null,null,null);
DataSet ClientsListDataSet=新数据集();
XmlReader clientsReader=新的XmlNodeReader(clientsNode);
XmlReadMode oko=clientsListsDataSet.ReadXml(clientsReader);
Console.WriteLine(clientsNode.InnerText);
WriteLine(clientsNode.InnerXml);
}
我得到了0行结果。因此,没有填充过滤器。 是否可以将它们设置为i C#应用程序


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

您可以尝试使用REST/oData web服务访问列表项,筛选器等功能是REST/oData协议的一部分

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

/Products?$filter=ID lt 4
OData代码项目示例

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

/MySite/MySubSite/_vti_bin/listdata.svc/ExternalList
以下是一些关于odata与windows应用程序的文章和博客:


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

很遗憾,我无法添加url/MySite/MySubSite/\u vti\u bin/listdata.svc/ExternalList的引用。我可以为/MySite/MySubSite/_vti_bin/listdata.svc/添加url,但我的外部列表的对象尚未创建。您好,Paulo,在visual studio中添加引用之前,请先查看是否可以在浏览器窗口中呈现xml。我输入了一个输入错误,你需要添加完整的url路径,例如[这不适用于外部列表。这是一种特殊的获取方式吗?是的,你说得对!我测试了外部列表不是通过odata公开的,如果odata是这种情况,asmx web服务可能也是这样。如果是wpf应用,为什么不直接建立到数据库的连接?