我正在尝试通过CAML从SharePoint中提取列表,我希望按特定字段排序返回的列表.该字段是查找字段.当我将OrderBy设置为查找字段时,查询返回无序,如果我使用文本字段就可以了.
当我在编辑器中构建它时,U2U CAML查询构建器将返回有序的查询.
这是我如何构建和执行查询的代码片段:
String baseQuery = "<Query><Where><Eq><FieldRef Name='paApproved' /><Value Type='Boolean'>1</Value></Eq></Where><OrderBy><FieldRef Name='paState' Ascending='True' LookupValue='TRUE' /></OrderBy></Query>";
qStates.Query = baseQuery;
SPListItemCollection byState = web.Lists["paUpdates"].GetItems(qStates);
Run Code Online (Sandbox Code Playgroud)
其余的是一个for循环,它解析集合并显示它.如有必要,我可以发布.
这是CAML查询工具发出的SOAP调用,我使用wireshark从HTTP流中删除它.
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<listName>paUpdates</listName>
<query>
<Query xmlns="">
<Where>
<Eq>
<FieldRef Name="paApproved" />
<Value Type="Boolean">1</Value>
</Eq>
</Where>
<OrderBy>
<FieldRef Name="paState" Ascending="False" />
</OrderBy>
</Query>
</query>
<viewFields>
<ViewFields xmlns="" />
</viewFields>
<queryOptions>
<QueryOptions xmlns="" />
</queryOptions>
</GetListItems>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)
无论出于何种原因,CAML查询工具都能正常工作,我的代码却没有.谁知道为什么?提前致谢.
编辑反映我实际测试的代码.我有一些代码值不正确.
不确定这是否被问到,但搜索还没有完全找到我正在寻找的东西.我已经有了页面布局,我需要做的是以编程方式在Pages库中创建一个页面.
我对细节很模糊,但不知怎的,我想我需要打开布局,然后将其流式传输到页面然后保存页面.我不确定该怎么做.
该页面是上下文敏感的,所以我想我将首先使用SPSite和SPWeb来访问列表.
我不清楚的是,我怎样才能获得布局?我想我应该可以添加一个像这样的页面:
SPWeb web = SPContext.Current.Site.OpenWeb();
SPList Pages = web.Lists["Pages"];
SPListItemCollection splc = Pages.Items;
foreach (SPListItem spli in splc)
{
if (spli.Name == "lmIntraTopicsArticle")
{
}
}
SPListItem sli = splc.Add();
Pages.Update();
SPFolder PagesFolder = Pages.RootFolder;
byte[] layoutContents = new byte[20];
SPFile myNewPage = PagesFolder.Files.Add(PagesFolder.Url + "/TopicWindowArchive.aspx", layoutContents);
web.Update();
Run Code Online (Sandbox Code Playgroud)
现在我需要弄清楚如何从布局中添加内容.如果我搞清楚的话会更新一些.
谢谢,
我正在从PHP NuSoap实现中检索数据,它正在返回如下数据:
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:getHashCodeAllTablesResponse xmlns:ns1="urn:getSchemaForRhythms">
<return xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType=":[121]">
<item xsi:type="xsd:">
<md5Hash xsi:type="xsd:string">e294967afe9834bf8477252ac0c3686e</md5Hash>
<tableName xsi:type="xsd:string">SYSCONGLOMERATES</tableName>
<isView xsi:type="xsd:string">false</isView>
<viewDefinition xsi:type="xsd:string">null</viewDefinition>
</item>
Run Code Online (Sandbox Code Playgroud)
我认为这是问题所在: <return xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType=":[121]">
当我将Axis2 soap客户端指向服务时,我收到此错误:
org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unsupported type http://schemas.xmlsoap.org/soap/encoding/ Array
这是我正在尝试做的一个非常简单的java示例:
public static void main(String[] args) {
// TODO code application logic here
try{
GetSchemaForRhythmsStub stub = new GetSchemaForRhythmsStub(null,"http://test.test.com/sqlSchemaService/schemaBuilder.php" );
GetSchemaForRhythmsStub.GetHashCodeAllTablesE response2= new GetSchemaForRhythmsStub.GetHashCodeAllTablesE();
stub.getHashCodeAllTables(response2);
}catch(Exception ex)
{
System.out.println(ex.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
我找不到任何与Array数据类型和Axis相关的文档.我错过了什么吗?
谢谢,