SharePoint : 使用SPQuery对象时要注意的事项
2015-12-18 12:10
429 查看
我们经常需要对一个列表进行查询,此时最灵活的方式就是直接使用SPQuery对象。这个对象的查询语法称为CAML。一般为了简单起见,我们会通过下面这样小工具先生成一个查询范例
我们可以看到查询文本大致如下
<Query>
<Where>
<Contains>
<FieldRef Name='_x6d4b__x8bd5_' />
<Value Type='Text'>chenxizhang</Value>
</Contains>
</Where>
</Query>
点击"Test"之后,可以看到如下效果
下面,我们就很自然地想到将这个查询文本用于我们自己的SPQuery对象
SPSite site = new SPSite("http://localhost:8080");
SPWeb web = site.OpenWeb();
SPList list = web.Lists["测试文档库"];
SPQuery q = new SPQuery();
q.Query = string.Format("<Query><Where><Contains><FieldRef Name='{0}' /><Value Type='Text'>{1}</Value></Contains></Where></Query>", "_x6d4b__x8bd5_", "chenxizhang");
q.ViewFields = list.DefaultView.ViewFields.SchemaXml;
foreach (SPListItem item in list.GetItems(q))
{
Console.WriteLine(item.ID);
}
Console.WriteLine("完成查询");
以上代码看似很正常,但很奇怪的是,查询似乎没有起作用,因为它总是返回文档库全部的ListItem
经过检查和确认,一定要将<Query>这个根元素拿掉,才可以生效。所以这是典型的由工具产生的误导啊
我们可以看到查询文本大致如下
<Query>
<Where>
<Contains>
<FieldRef Name='_x6d4b__x8bd5_' />
<Value Type='Text'>chenxizhang</Value>
</Contains>
</Where>
</Query>
点击"Test"之后,可以看到如下效果
下面,我们就很自然地想到将这个查询文本用于我们自己的SPQuery对象
SPSite site = new SPSite("http://localhost:8080");
SPWeb web = site.OpenWeb();
SPList list = web.Lists["测试文档库"];
SPQuery q = new SPQuery();
q.Query = string.Format("<Query><Where><Contains><FieldRef Name='{0}' /><Value Type='Text'>{1}</Value></Contains></Where></Query>", "_x6d4b__x8bd5_", "chenxizhang");
q.ViewFields = list.DefaultView.ViewFields.SchemaXml;
foreach (SPListItem item in list.GetItems(q))
{
Console.WriteLine(item.ID);
}
Console.WriteLine("完成查询");
以上代码看似很正常,但很奇怪的是,查询似乎没有起作用,因为它总是返回文档库全部的ListItem
经过检查和确认,一定要将<Query>这个根元素拿掉,才可以生效。所以这是典型的由工具产生的误导啊
相关文章推荐
- Android 基础UI Demo小合集
- driver.close 和 driver.quit
- UGUI InputField获取输入焦点
- UITableView的自定义cell
- 28.Which two statements are true regarding constraints?
- requirejs+anjularjs+express框架
- UIAlertController的一些简单实用方法
- 【转】特殊权限控制之SUID、SGID、Sticky
- PowerBuild利用timing实现同时使用多个定时器
- SQL Server中字符串转化为GUID的标量函数实现
- Duilib界面布局文件XML学习-XML文件简介
- UICollectionView 运用
- processing - MySQL example1-conntction(), query() , next() , getInt(1)
- [转]无需看到你的脸就能认出你——实现Beyond Frontal Faces: Improving Person Recognition Using Multiple Cues
- iOS7/8 UIButton高亮状态延迟问题全解
- Java中parse()和valueOf(),toString()的区别
- SQLiteDatabase query 和 rawQuery 的区别
- IOS UITextField 去除字符串首位空格和换行 设置清除按钮显示模式
- Rescue
- Request&Response编程