2009-07-16 47 views
0

我試圖通過CAML創建查找字段作爲網站列。我想用作查找源的列表是在Feature Receiver中創建的,所以我不知道它是否是ID。我讀過幾篇博文,表明我可以將列表的路徑放在List屬性中。從這些帖子的評論看來,這個解決方案適用於某些人,但不適用於其他人。我在後一組。通過CAML查找字段作爲網站列

當我嘗試使用查找網站列中的內容類型相關聯我:「從HRESULT異常:0x80040E07」

<Field 
    ID="{da94e56b-428f-4b95-b4c6-24aed0256475}" 
    Name="Test_x0020_Lookup_x0020_Column" 
    StaticName="Test_x0020_Lookup_x0020_Column" 
    DisplayName="Test Lookup Column" 
    Type="Lookup" 
    Required="FALSE" 
    List="Lists/Test" 
    ShowField="Title" 
    PrependId="TRUE" 
    Group="Test Site Columns" /> 

    <ContentType 
    ID="0x0100B6D92594DDCE8E479D0EB0C414C463B0" 
    Name="Test Lookup Content Type" 
    Version="0" 
    Group="Test Content Types"> 
    <FieldRefs> 
     <FieldRef 
     ID="{da94e56b-428f-4b95-b4c6-24aed0256475}" 
     Name="Test_x0020_Lookup_x0020_Column" 
     Required="TRUE" /> 
    </FieldRefs> 
    </ContentType> 

回答

2

把路徑列表中列出的屬性沒有工作,我已經做到了在我的項目,並取得成功。我想讓你檢查的一件事是功能的順序。您是否手動執行功能?或者在onet.xml中使用它們。因爲當你的內容類型功能執行時,應該已經有該列表來引用了。

此外,您應該在日誌文件夾中的SharePoint日誌中獲得更詳細的信息。嘗試找到更多的錯誤信息,它會在很多情況下有所幫助。

1

我對schema.xml中定義的列表有同樣的問題。我通過確保在field def和schema.xml文件中提供相同的路徑來修復它。

1

列表名稱不爲我工作,要麼。

我不得不使用Feature Activator動態創建列表和查找列。一旦我通過SharePoint對象模型創建查找列表,就有Guid。

 

string xml = // your CAML up top with a TOKEN to replace List="{TOKEN}" 


SPList listWithLookupColumn = web 
      .Lists 
      .Add(url,description,SPListTemplateType.GenericList); 

Guid listId = listWithLookupColumn.ID; 

xml = xml.Replace("TOKEN",listId); 

// some code to find the list you want lookup column on 
SPList listToAddLookupColumn = listRepository(listNameToFind); 

listToAddLookupColumn 
    .AddFieldAsXml(xml,true,SPAddFieldOptions.AddToDefaultContentType) 
 
3

確保創建網站coloumn覆蓋=「TRUE」

+0

時添加此屬性:然後你就可以使用上面的現有CAML以下方法需要查找列在名單上動態創建列這是最好的答案,但沒有人投票。 – ShootingStar 2013-05-09 06:45:39

+0

請指出確切位置和原因。 – Alexey 2014-10-08 08:25:26