无法使用CAML查询获取Sharepoint List数据

时间:2015-11-24 20:18:19

标签: c# sharepoint caml

我正在尝试使用下面列出的CAML查询从SP列表中获取数据。

CAML查询

oQuery.Query = "<Where><Eq><FieldRef Name='" 
    + jTitleMappingList.Fields["SET Area"].InternalName + "'/>"
    + "<Value Type='LOOKUP'>" + ddlSubsite.SelectedValue
    + "</Value></Eq></Where>";

错误消息面临:

  

{Microsoft.SharePoint.SPException:一个或多个字段类型不是   安装得当。转到列表设置页面以删除它们   领域。 ---&GT; System.Runtime.InteropServices.COMException(0x81020014):   未正确安装一个或多个字段类型。转到列表   设置页面删除这些字段。在   Microsoft.SharePoint.Library.SPRequestInternalClass.GetListItemDataWithCallback2(IListItemSqlClient   pSqlClient,String bstrUrl,String bstrListName,String bstrViewName,   String bstrViewXml,SAFEARRAYFLAGS fSafeArrayFlags,   ISP2DSafeArrayWriter pSACallback,ISPDataCallback pPagingCallback,   ISPDataCallback pPagingPrevCallback,ISPDataCallback   pFilterLinkCallback,ISPDataCallback pSchemaCallback,ISPDataCallback   pRowCountCallback,Boolean&amp; pbMaximalView)at   Microsoft.SharePoint.Library.SPRequest.GetListItemDataWithCallback2(IListItemSqlClient   pSqlClient,String bstrUrl,String bstrListName,String bstrViewName,   String bstrViewXml,SAFEARRAYFLAGS fSafeArrayFlags,   ISP2DSafeArrayWriter pSACallback,ISPDataCallback pPagingCallback,   ISPDataCallback pPagingPrevCallback,ISPDataCallback   pFilterLinkCallback,ISPDataCallback pSchemaCallback,ISPDataCallback   pRowCountCallback,Boolean&amp; pbMaximalView)---内心的结束   异常堆栈跟踪--- at   Microsoft.SharePoint.SPGlobal.HandleComException(COMException comEx)
  在   Microsoft.SharePoint.Library.SPRequest.GetListItemDataWithCallback2(IListItemSqlClient   pSqlClient,String bstrUrl,String bstrListName,String bstrViewName,   String bstrViewXml,SAFEARRAYFLAGS fSafeArrayFlags,   ISP2DSafeArrayWriter pSACallback,ISPDataCallback pPagingCallback,   ISPDataCallback pPagingPrevCallback,ISPDataCallback   pFilterLinkCallback,ISPDataCallback pSchemaCallback,ISPDataCallback   pRowCountCallback,Boolean&amp; pbMaximalView)at   Microsoft.SharePoint.SPListItemCollection.EnsureListItemsData()at   Microsoft.SharePoint.SPFieldCollection.PopulateReturnedFieldsSafeArray()   在   Microsoft.SharePoint.SPFieldCollection.EnsureFieldsSafeArray(布尔   bGetFullXML)在Microsoft.SharePoint.SPFieldCollection.get_Count()   在Microsoft.SharePoint.SPFieldCollection.get_Item(Int32 iIndex)at   AZ.SharePoint.RST.AddUsersFromExcelUtility.RSTArchiveSetArea.RSTArchiveSetAreaUserControl.b__0()}

我尝试创建一个自定义视图,其中列逐个添加,但是找不到有问题的列也没有用。并且还尝试添加具有内部名称的列以引用CAML查询过滤器,但之后查询也无法获取所需的结果。

2 个答案:

答案 0 :(得分:1)

该错误消息通常意味着您的CAML查询的语法有问题。

  • CAML可能对字符大小写很敏感。尝试将Type='LOOKUP'更改为Type='Lookup'
  • 确保jTitleMappingList.Fields["SET Area"].InternalName的值解析为列表中某个字段的实际内部名称
  • 确保要过滤的列实际上是Lookup列,而不是其他列类型

答案 1 :(得分:0)

我们不确定您是如何构建查询的,但这里只是一个小例子:

query.Query = "<Where><Eq><FieldRef Name='SharePointFielName' /><Value Type='Text'>" + ddlSubsite.SelectedValue +</Value></Eq></Where>";

此链接可能有助于您更好地理解;

https://msdn.microsoft.com/en-us/library/microsoft.sharepoint.client.list.getitems(v=office.14).aspx