2016-06-10 52 views
0

使用Kentico 7,我有aspx頁面上的CMS的形式,像這樣:Kentico&CMSForm:頁面加載後載入不同的表單?

<cms:CMSForm runat="server" ID="cmsFormCreate" 
    FormMode="Insert" ShowOkButton="false" 
    ParentNodeID='<%# documentsFolderNodeID %>' 
/> 

在後端,我設置窗體的父節點ID(所以我有一個基本位置保存到我稍後會改變。

我通過調用

CMS.SettingsProvider.DataClassInfoProvider.GetClasses("*", "className LIKE '%MyDocument.%'", "", Integer.MaxValue).Tables(0).Rows 

返回數據集,我的文檔名稱,類ID談判(如果我需要的話)等等獲取表單/文件名。

我想更改回發時加載的表單。這就是說,我在CMS站點管理器中有幾種文檔類型,我想在它們之間進行交換。我想顯示一個頁面加載(這工作正常)。但是,當我啓動機制來更改顯示的窗體(下拉列表OnSelectedIndexChanged)時,它無法加載新窗體。

Private Sub PopulateCMSForm(ByRef targetForm As CMS.FormControls.CMSForm, sourceDDL As ListItem)  
    targetForm.FormName = sourceDDL.Value 
    'targetForm.LoadForm() 'same results with or without this 
End Sub 

我覈實,我希望通過形式硬編碼形式的域名(文檔類型代號)顯示正確且形式將顯示就好了第一次加載頁面。

如何設置更改CMS表單對象在Post-Back上加載的空白/空白文檔類型?

回答

0

嘗試這樣:

Private Sub PopulateCMSForm(ByRef targetForm As CMS.FormControls.CMSForm, sourceDDL As ListItem)  
    targetForm.FormName = sourceDDL.Value 
    targetForm.LoadForm(True) 
End Sub 

值的方法LoadForm的參數應該強制形式的重載。

+0

由於加載表單會導致錯誤,指出未爲節點指定類。此行爲意味着LoadForm(true)將加載現有數據,而不是爲新數據準備好表單模板。 – MetalPhoenix

+0

你能給我們舉個例子,FormName屬性設置了什麼值?它是否採用有效的表格/類名格式? – Plaz

+0

在這個特定的實例中,表單顯示名稱被設置爲「MyDocument.State#GA-Document」。代碼名稱設置爲「MyDocument_State.GA_Document」。當然,您將表單名稱設置爲顯示名稱。該文檔確實存在於站點管理器的文檔類型中,並在第一次加載頁面時正確加載使用表單名稱('MyDocument.State#GA-Document')。 – MetalPhoenix