C# 使用数据源筛选器-Sharepoint SOAP查询外部内容类型(外部列表)
我将sharepoint连接到sql server数据库。我根据外部内容类型制作了一个列表。由于大量数据我不得不在添加外部内容类型操作时添加过滤器参数-在列表上。我使用默认值添加通配符和限制过滤器。我创建了关于外部内容类型的列表。 我运行默认列表网站。我没有看到任何数据。所以我编辑网页并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*"/>
<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应用,为什么不直接建立到数据库的连接?