CAML难以学习,难以使用,除了使用CAML查询之外,还有更好的方法从MOSS获得结果吗?并不是指速度较慢的Web服务,也不是指速度较慢的对象模型.
我想半智能CAML查询 - 我可以给它一个标题(这是最终用户看到的)并查找相应的"标题"以作为CAML查询的一部分传递:
var caml = "<OrderBy><FieldRef Name='" + field + "'/></OrderBy>";
Run Code Online (Sandbox Code Playgroud)
看起来我可以使用对象模型迭代列表的Fields集合,然后键入Title属性以与用户看到的内容进行比较.我的问题在于StaticName与InternalName的使用.我的内容+ MSDN文档似乎表明InternalName是在上面的代码中使用和替换字段的正确属性- 特别是因为无法修改InternalName.
任何人都可以阐明这一点吗?
SharePoint Web Service具有以下签名的方法:
public System.Xml.XmlNode GetListItems(string listName, string viewName, System.Xml.XmlNode query, System.Xml.XmlNode viewFields, string rowLimit, System.Xml.XmlNode queryOptions, string webID) {
object[] results = this.Invoke("GetListItems", new object[] {
listName,
viewName,
query,
viewFields,
rowLimit,
queryOptions,
webID});
return ((System.Xml.XmlNode)(results[0]));
}
Run Code Online (Sandbox Code Playgroud)
我只想返回列表中的"ID"和"标题"列,例如"ProductNames",而不是返回所有列.
如何使用这个webmethod实现只返回某些列?
我正在使用以下方法返回所有列:
public XmlNode GetListItems(string listName, XmlElement camlQuery)
{
sp.Lists listService = this.getSPListService();
XmlDocument xmlDoc = new XmlDocument();
XmlNode ndViewFields = xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", "");
XmlElement queryOptions = xmlDoc.CreateElement("QueryOptions");
XmlElement foldersEl = xmlDoc.CreateElement("Folder");
if (camlQuery == null) // override default view filters
{ …Run Code Online (Sandbox Code Playgroud) 尝试使用CAML查询从SharePoint列表中获取数据.
我使用Descending属性,但没有按预期工作.
请在下面找到代码.
<OrderBy>
<FieldRef Name='ID' Descending = 'True'/>
</OrderBy>
Run Code Online (Sandbox Code Playgroud)
上面的代码仍然获取最小的ID(其中ID是1,2,3 ......),在我的情况下,它获取ID = 1
提前致谢.
我正在调用一个返回CAML片段的SharePoint Web服务API.我已经远远地搜索了interweb但是我一直无法弄清楚如何使这个CAML片段呈现为"普通"HTML,我可以在更加理智的环境中呈现,如Plumtree,WLP,Liferay或任何其他门户除了SharePoint.
如果没有这种方法,我想知道为什么微软首先编写了返回CAML的SharePoint Web服务调用.Web服务用于互操作性,似乎CAML仅在SharePoint中运行的WebPart中有效.[Bill和Steve注意:这不是互操作性.]
如果我无法对返回的CAML做任何事情,我只会调用另一个只返回数据的Web服务,然后编写自己的UI.我希望有一条更轻松的道路.任何建议将不胜感激.
在针对sharepoint list.asmx服务运行caml查询时,我有这种奇怪的行为,GetListItems方法也返回已删除的项目;
found item: test
found item: already done
found item: recurring
found item: recurring event 3-4
found item: Deleted: recurring event 3-4
found item: Deleted: recurring event 3-4
found item: Deleted: recurring event 3-4
found item: Deleted: recurring event 3-4
found item: Deleted: recurring event 3-4
found item: todays event 15-16 //<- NOT DELETED YET
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?我是否需要对caml查询应用特殊过滤器?我目前正在查询如下;
<Query>
<OrderBy>
<FieldRef Ascending='TRUE' Name='EventDate' />
</OrderBy>
<Where>
<Eq>
<FieldRef Name='EventDate' />
<Value Type='DateTime'><Today /></Value>
</Eq>
</Where>
</Query>
Run Code Online (Sandbox Code Playgroud)
到目前为止我尝试了什么; 1.清除回收站中的所有内容2.在sharepoint网络服务器上执行iisreset
请注意; …
我无法以正确的顺序显示列表主题的值.以下是列表中的字段(带有实际的系统名称):
-Title -Category -NominatedWon -Logo
"标题"字段包含年份值,例如"2011","2010"等.
//getting the awards list and extracting correct values from the necesary fields
//asp running with elevated privilegs
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(webUrl))
{
using (SPWeb web = site.OpenWeb())
{
try
{
SPList awardsList = web.Lists["Awards"];
SPListItemCollection listItemCollection = awardsList.Items;
//Creating the table
Table tbl = new Table();
//foreach (SPListItem oListItem in listItemCollection)
int x = listItemCollectionI.Count;
for(int i = 0; (i * 2) < x; i++) // divide total item collection …Run Code Online (Sandbox Code Playgroud) 我之前有一个问题(已经解决了),为什么我被限制在CAML中的两个参数.
我现在想知道的是,我可以重新格式化这个CAML查询以接受5个OR参数,其中我从列表中收集所有项目我找到了5个参数中的任何一个的匹配项.
我问的原因是,我仅限于使用Sandbox解决方案Web部件的Designer部署.这些解决方案的资源非常有限,我希望尽可能提高查询效率,而且大多数LINQ解决方案都不像CAML那样有效地改变SQL调用.
我有一个文档库SP 2013,想要从所有文件夹和子文件夹中获取所有文档.我不想要任何文件夹,但我想从每个文件夹中获取所有文件.
使用SP 2010 U2U CAML Builder,我做了以下查询:
<query>
<QueryOptions>
<ViewAttributes Scope="Recursive" />
</QueryOptions>
</query>
Run Code Online (Sandbox Code Playgroud)
此查询适用于SP 2010中的库,但它不适用于SP 2013
以下是从SP 2013库中获取数据的代码
CAMLQuery = "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'>\
<soapenv:Body>\
<GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'>\
<listName>My Document Library</listName>\
<query>\
<QueryOptions>\
<ViewAttributes Scope="Recursive" />\
</QueryOptions> \
</query>\
</GetListItems>\
</soapenv:Body>\
</soapenv:Envelope>";
$.ajax({
url: "https://<server>/teams/<siteName>/_vti_bin/lists.asmx",
type: "POST",
dataType: "xml",
data: CAMLQuery,
complete: getGrid,
contentType: "text/xml; charset=\"utf-8\""
});
Run Code Online (Sandbox Code Playgroud)
getGrid是完成时的回调函数
请帮我解决一下这个.
我是新来的查询,并一直在努力.我需要最后修改的列表项.只有一个项目.这意味着它应该是'modified',而rowlimit应该是1.
但只有我的查询的rowlimit部分正在工作.不是订单部分.
这是我的查询:
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml('<View><Query><OrderBy><FieldRef Name=\'Modified\' Ascending="FALSE"/></OrderBy><RowLimit>1</RowLimit></Query></View>";')
Run Code Online (Sandbox Code Playgroud)
我不知道我哪里错了.我甚至尝试在上述查询中删除Query标记.
查询正在运行,它只获得一条记录.订单不工作,我相信.
这是在jQuery中.我已经写了一个函数,并在我的Ready函数中调用该函数.
请帮我.
谢谢.