none
CAML查询中Value元素到底里面到底能写什么样的东西? RRS feed

  • 问题

  • msdn没有任何参考,说Value元素可以有“许多”子元素。

    DateTime类型的字段可以有<Today/>,查询当前用户的话使用<UserId/>,我还见过<ProjectProperty Select="Id"/>,那么到底可以有什么样的值呢?

    是否这个东西是可以自定义的,每种不同的类型自己处理Value内部的内容?至今我没找到可以定义这个的地方。

    请各位前辈帮帮我,是否有一个什么全面的参考,不然现在写CAML查询很束手束脚。
    2010年1月11日 8:40

全部回复

  • hi,现在有个FriendlyQuery.dll!  他可以支持传统的T-SQL语句!
    CAML
    SPQuery spq = new SPQuery(); //查询结果要显示的字段[select title,status,duedate from tbl],但是这里的name后面是等于字段的InternalName //有些Fields[i].Title == Fields[i].InternalName,但有些不相等! 如DueDae spq.ViewFields = "<FieldRef Name='Title' /><FieldRef Name='Status' /><FieldRef Name='DueDate' />"; //查询条件 [分组 排序 where条件] //<Geq></Geq> >= //<EQ><EQ> = //<Gt></Gt> > //<Lt></Lt> < | <Neq></Neq> != | <Contains></Contains> 包含 // where title like 'my' spq.Query = "<Where><Contains><FieldRef Name='Title' /><Value Type='Text'>my</Value></Contains></Where>"; spq.RowLimit = 5;//返回结果条数 SPListItemCollection myItems = list.GetItems(spq); Response.Write("个数:"+myItems.Count+"<br />");

    使用FriendlyQuery.dll :

    SPWeb web = SPContext.Current.Web;
            //Response.Write(web.Name+"??");
            string selectStr = "SELECT * FROM Tasks WHERE [Title] CONTAINS 'my'";  //注意my后面不要多一个空格,否则要报错

    CollaDec.Tools.FriendlyQuery fq = new CollaDec.Tools.FriendlyQuery(web, selectStr);
            fq.RowLimit = 5;
            fq.Scope = CollaDec.Tools.FriendlyQuery.QueryScope.AllItemsAndFolders;
            SPListItemCollection items = fq.GetItems();

    更多:http://www.cnblogs.com/jinho/archive/2010/03/29/1700158.html

     

    希望对你有帮助!


    Anything Is Possible !
    • 已建议为答案 Jiang Hao 2010年4月30日 4:06
    2010年3月29日 5:25
  • 你好

    如果不太了解参考,建议你通过这种方式学习:在一个List中设置过滤条件,然后通过API取到这个List的Schema,查看Where节点中的语句。

    2010年6月10日 3:01
  • U2U Caml Query Builder 去搜一下这个东西!
    2010年6月13日 10:59
  • 1. SharePoint 的SDK中有Value元素的参考

    2. CAML的初学者可以考虑使用一些CAML工具,能够根据条件生成CAML语句,在使用的时候稍作处理即可。


    人的强大不是征服了什么,而是承受了什么
    2010年6月18日 3:17