2012-01-23 67 views
1

名稱是: 列名=>關鍵字(子過程,方法,服務模型,等等)的文本的 列類型=>多行異常而執行CAML查詢的SharePoint在文檔庫中的列的2007

我們在CAML查詢使用上述列名如下

query.Query = "<Where><Eq><FieldRef Name='Keywords(Sub-Processes,Methodology,Servicing Model, etc)'/><Value Type='Text'>Merchant Services,Merchant Set Up</Value></Eq></Where>"; 

,但是當我們運行的代碼,我們得到異常:

Microsoft.SharePo int.SPException:正確安裝一個或多個字段類型不是 。轉至列表設置頁面以刪除這些 字段。

這是因爲列名中使用的特殊字符,如果是的話,那麼我該如何糾正它。

我們不能更改列名稱,因爲它是要求。

+0

我加入的代碼,但提交的代碼後,是沒有得到顯示:( – Rushikesh

+0

查詢。查詢= 「<值類型= '文本'>商戶服務,商家設置」; – Rushikesh

+0

@Rushikesh你確定字段內部名稱太長?請確保使用SharePoint管理器。或者你可以嘗試使用字段ID,而不是'ID =「{G-U-I-D}」 –

回答

1

我可以肯定地告訴你(給定特殊字符)那不是字段的內部名稱。它可能是顯示名稱,但它不是內部名稱。

錯誤是因爲沒有字段和您提供的內部名稱。

就我個人而言,當我想要查找字段的內部名稱時,我會轉到列表的列表設置並編輯列。當這樣做的時候,會有一個帶有'field ='的查詢參數,後跟內部名稱。還有其他可以找到的地方,以及可用於獲取此類信息的其他SharePoint工具(SharePoint Manager由另一張海報提及)。

+0

+1 - 這就是我如何做以及如何回答問題。 – SpartanDonut

0

我用過「關鍵字_x0020_ x002f _x0020_Folksnomy」,它對我很有用。 我提取了文檔庫的所有列,並將其綁定到GridView,在GridView中我找到了這個名字。

顯示列名=>關鍵字(子過程,方法,服務模型,等等)

錯一個是=> Keywords_x0020_(子過程,_x0020_Methodology,_x0020_Servicing_x0020_Model,_x0020_etc)

新近發現正確的名稱是=>關鍵字_x0020_ x002f _x0020_Folksnomy

2

內部名稱和顯示名稱彼此完全不同。在某些情況下它們可以是相同的,但不是全部。兩個單詞之間通常有一個空格轉義序列。

在運行時檢索內部名稱通常是一種很好的做法,而不是對其進行硬編碼。

這裏是如何做到這一點:

var internalName=list.Fields.GetFieldByInternalName(column.ColumnName).Title;