我在使用caml语句查询文档库的时候,一直没查询到相应的结果,请问这是为什么?
这是我的后台代码
SPList list = web.Lists["项目文档"];//取得站点中某个库
SPQuery query = new SPQuery();
query.Query = @"<Query><Where><Eq><FieldRef Name='ID' /><Value Type='Integer'>2249</Value></Eq></Where></Query>";
query.ViewAttributes = "Scope='Recursive'"; //设置范围为递归,包含子文件夹
SPListItemCollection lists = list.GetItems(query);
SPListItem item = lists[0];
//string a = item.Fields["ows_ID"].ToString();
这是我调试时候item的xml参数
<z:row xmlns:z='#RowsetSchema' ows_ID='12' ows_ContentTypeId='0x01010011EA2AC3DFD2AF40B5274A47AC9E8BDE' ows_ContentType='Word文档' ows_Created='2011-11-16 14:32:09' ows_Author='128;#Y严豪' ows_Modified='2011-11-16 16:30:54' ows_Editor='1073741823;#系统帐户' ows__ModerationStatus='0' ows_FileRef='12;#PWA/RDMP研发管理平台/Project Documents/03 技术资料/2011-11-11_HEDS_SSMS_升级方案 V1.0.docx' ows_FileDirRef='12;#PWA/RDMP研发管理平台/Project Documents/03 技术资料' ows_Last_x0020_Modified='12;#2011-11-16 16:30:53' ows_Created_x0020_Date='12;#2011-11-16 14:32:09' ows_File_x0020_Size='12;#2417777' ows_FSObjType='12;#0' ows_SortBehavior='12;#0' ows_PermMask='0x7fffffffffffffff' ows_CheckedOutUserId='12;#' ows_IsCheckedoutToLocal='12;#0' ows_FileLeafRef='12;#2011-11-11_HEDS_SSMS_升级方案 V1.0.docx' ows_UniqueId='12;#{E2BECE57-EB94-4A8D-B5E0-385B1A7F70F7}' ows_ProgId='12;#' ows_ScopeId='12;#{E62017AE-D64C-4E40-818C-0678220D4CCC}' ows_VirusStatus='12;#2417777' ows_CheckedOutTitle='12;#' ows__CheckinComment='12;#' ows_Modified_x0020_By='SHAREPOINT\system' ows_Created_x0020_By='HELC\yh04839' ows_File_x0020_Type='docx' ows__EditMenuTableStart='2011-11-11_HEDS_SSMS_升级方案 V1.0.docx' ows__EditMenuTableStart2='12' ows__EditMenuTableEnd='12' ows_LinkFilenameNoMenu='2011-11-11_HEDS_SSMS_升级方案 V1.0.docx' ows_LinkFilename='2011-11-11_HEDS_SSMS_升级方案 V1.0.docx' ows_LinkFilename2='2011-11-11_HEDS_SSMS_升级方案 V1.0.docx' ows_DocIcon='docx' ows_ServerUrl='/PWA/RDMP研发管理平台/Project Documents/03 技术资料/2011-11-11_HEDS_SSMS_升级方案 V1.0.docx' ows_EncodedAbsUrl='http://rdmp-test.hitachi-helc.com/PWA/RDMP研发管理平台/Project%20Documents/03%20技术资料/2011-11-11_HEDS_SSMS_升级方案%20V1.0.docx' ows_BaseName='2011-11-11_HEDS_SSMS_升级方案 V1.0' ows_FileSizeDisplay='2417777' ows_MetaInfo='12;#vti_contentversionisdirty:BW|false vti_thumbnailexists:BW|false vti_parserversion:SR|14.0.0.6029 vti_contenttag:SW|{E2BECE57-EB94-4A8D-B5E0-385B1A7F70F7},4,11 _Category:EW| Links:LW|<?xml version="1.0" encoding="UTF-8"?><Result><NewXML><PWSLinkDataSet xmlns="http://schemas.microsoft.com/office/project/server/webservices/PWSLinkDataSet/"><LinkedItems xmlns=""><UniqueId>79ff6457-bc99-429e-8c05-04ac537eb5e4</UniqueId><ID>12</ID><ListID>00000000-0000-0000-0000-000000000000</ListID><Title>第三阶段遗留问题跟进</Title><Link>1</Link><LinkType>8</LinkType></LinkedItems><LinkedItems xmlns=""><UniqueId>257b82cd-74cd-438d-b48a-cf5c9448189c</UniqueId><ID>12</ID><ListID>00000000-0000-0000-0000-000000000000</ListID><Title>与询单系统集成</Title><Link>1</Link><LinkType>8</LinkType></LinkedItems></PWSLinkDataSet></NewXML><ProjectUID>8d5560fe-f1ea-4616-b1ad-90b082502c28</ProjectUID><OldXML><PWSLinkDataSet xmlns="http://schemas.microsoft.com/office/project/server/webservices/PWSLinkDataSet/" /></OldXML><ItemType>3</ItemType><PSURL>http://rdmp.hitachi-helc.com/pwa</PSURL></Result> vti_stickycachedpluggableparserprops:VX|Subject PLM编号 文档类别 上传标识 密级 文档状态 Keywords _Status Owner 技表号 vti_title _Author _Category ContentType ContentTypeId Links _Comments Status 项目号 vti_author:SR|HELC\\yh04839 display_urn\:schemas-microsoft-com\:office\:office#Owner:SW|Y严豪 项目号:SW|RDC1102 vti_previewexists:BW|false 密级:EW| 文档状态:SW|(1)草稿 文档类别:SW|(3)参考资料 上传标识:SW|(2)空值 Keywords:EW| _Status:EW| vti_modifiedby:SR|SHAREPOINT\\system 技表号:EW| Owner:SW|128;#Y严豪 vti_foldersubfolderitemcount:IR|0 vti_docstoreversion:IR|4 vti_metainfoversion:IW|5 vti_title:SW|2011-11-11_HEDS_SSMS_升级方案 _Author:SW|于强 ContentType:EW| ContentTypeId:LW|0x01010011EA2AC3DFD2AF40B5274A47AC9E8BDE vti_sourcecontrolmultiuserchkoutby:VR|HELC\\\\yh04839 _Comments:EW| Status:SW|草稿 Subject:EW| PLM编号:EW| vti_folderitemcount:IR|0 ' ows__Level='1' ows__IsCurrentVersion='1' ows_ItemChildCount='12;#0' ows_FolderChildCount='12;#0' ows_SelectTitle='12' ows_SelectFilename='12' ows_Edit='0' ows_owshiddenversion='4' ows__UIVersion='512' ows__UIVersionString='1.0' ows_Order='1200.00000000000' ows_GUID='{7C891A69-538B-491E-ABC0-05AE1B60B2C3}' ows_WorkflowVersion='1' ows_ParentVersionString='12;#' ows_ParentLeafName='12;#' Etag="{E2BECE57-EB94-4A8D-B5E0-385B1A7F70F7},4" ows_Title='2011-11-11_HEDS_SSMS_升级方案' ows_c000_Combine='0' ows_c000_RepairDocument='0' ows__x6587__x6863__x7c7b__x522b_='(3)参考资料' ows__x9879__x76ee__x53f7_='RDC1102' ows_Combine='0' ows_RepairDocument='0' ows_ServerRedirected='0'/>
我想通过ows_ID去查询对应结果。
query.Query = @"<Where><Eq><FieldRef Name='ID' /><Value Type='Counter'>2249</Value></Eq></Where>"; 试试看。
用XPath去查询
我只想用caml,本来这个用循环就搞定了,现在我要性能高点的查询,caml最好了。
把CAML里的 <Query></Query>去掉... 你是从 CAMLBuilder那货里直接复制粘贴出来的么,呵呵
最首先是没有<Query></Query>,测试不成功所以才加上继续测试的。去掉<Query></Query>没用。
@鳄鱼的眼泪: 是item.Fields["ows_ID"]没有值还是 Collection没有值?
@鳄鱼的眼泪:
1. 把<Value Type='Integer'>2249</Value> 中的 Integer 改为 Counter?这个... 算了吧...
2. 如果把 query.ViewAttributes = "Scope='Recursive'"; 注释掉后,查询在根文件夹下的项目能不能有值?
3. ItemID为 2249 的那个项目还存在么?
另,item.Fields["ows_ID"]应该用 item.Fields["ID"]或 item.ID
@山坡上的牧羊人: item.ID是有值的,就是那个2249,但用这个作为条件没出来相应的结果
@鳄鱼的眼泪: 用 CamlBuilder 试过吗?一个构造 Caml语句的工具
@山坡上的牧羊人: 用CamlBuilder查找了一下,发现真的是类型写错了。正确的语句如下:
<Where><Eq><FieldRef Name='ID' /><Value Type='Counter'>2249</Value></Eq></Where>
真如@凉风耗耗 所说啊,没有CamlBuilder都不知道是什么类型,这个真乱啊。不过感谢你们2位,总算是解决了。
@鳄鱼的眼泪: 奇怪... 之前我用 CAMLBuilder试了一下,在我本地用 Counter或 Integer都可以... 话说,拖了这么久,你经理不急么?哈哈
@山坡上的牧羊人: 我已经用for循环做完了,感觉性能还行,而且也经过系统的测试过了,所以不想再改用caml语句写了,就这样运行吧。我只是想搞清楚为什么一直之前用caml语句没得到相应的结果。
@鳄鱼的眼泪: 哪天接手你代码的那个人,看到这段代码估计会很无奈吧... 哈哈... 不过这么写确实不是好习惯... CAML的query语句其实不难,多用用 CamlBuilder就习惯了。
问题解决就把悬赏园豆给别人啊。他们不好意思说,我替他们表达表达。呵呵!
哦,忘记了。