2010-03-11 70 views
0

我需要替換SharePoint上現有列表上的視圖表單。這必須在一個功能中完成,並且我不擁有模式到列表,所以我不能簡單地更新xml。在SharePoint中,將表單添加到功能中的現有列表

我的功能將文件添加到在Elements.xml的名單:

<Module Name="Replacement Form" Path="" Url="Lists/ListName"> 
    <File Url="ReplacementDispForm.aspx" /> 
    </Module> 

和功能更新顯示形式的具體內容類型的功能激活功能接收器:

SPList list = web.Lists[listName]; 
    SPContentType type = list.ContentTypes[typeName]; 
    type.DisplayFormUrl = formUrl; 
    type.Update(); 

一切正常。問題是更新功能 - 因爲頁面包含Web部件,升級等導致頁面然後有一個額外的Web部件 - 共享點只需添加Web部件定義,即每個部署添加+1 Web部件。

所以我試圖刪除功能停用代碼的文件,但它簡單的錯誤,該文件無法刪除:

string name = "Lists/ListName/ReplacementDispForm.aspx"; 
SPFile file = web.GetFile(name); 
file.Delete(); 

的file.Delete是該行與SPException「莫非錯誤不刪除這個文件夾'。我不確定是否這是因爲該文件未被正確添加到列表中,或者我的刪除代碼不正確?

回答

0

你的代碼看起來不錯。我最近做了類似的東西,但不是刪除該文件中的停用,我創建了一個新的功能,刪除的文件,然後重新激活第一個特徵:

public override void FeatureActivated(SPFeatureReceiverProperties properties) 
{ 
    SPWeb web = properties.Feature.Parent as SPWeb; 
    web.Files.Delete("Lists/ListName/ReplacementDispForm.aspx"); 
    web.Features.Add(new Guid("{E6E82DC3-8802-4332-BD98-0025E0A435F3}"), true); 
} 

不知道是否有什麼差別或沒有,但它至少表明你正朝着正確的方向前進。

唯一突出給我的是provision本身。默認值可能會發揮作用,但您可能需要向File元素明確添加Type =「Ghostable」。

0

即使您不擁有它,也可以從列表中提取schema.xml。 SPSource工具從您網站上的任何列表中提取schema.xml。

可能不值得,因爲您似乎已經完成了大部分創建功能的工作等等。但是下次您需要做類似的事情。

相關問題