【问题标题】:Kentico & CMSForm: Load a different form after page load?Kentico & CMSForm:页面加载后加载不同的表单?
【发布时间】:2016-10-11 13:08:56
【问题描述】:

使用 Kentico 7,我在 aspx 页面上有一个 cms 表单,如下所示:

<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 表单对象在回发时加载的空/空白文档类型?

【问题讨论】:

    标签: c# asp.net-mvc vb.net kentico document-types


    【解决方案1】:

    试试这样的:

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

    True 值作为 LoadForm 方法的参数应该强制重新加载表单。

    【讨论】:

    • 这不起作用,因为加载表单会导致错误,指出没有为节点指定类。此行为意味着 LoadForm(true) 将加载现有数据,而不是为新数据准备好的表单模板。
    • 您能给我们举个例子吗,FormName 属性设置了什么值?它是有效的形式/类名格式吗?
    • 在这个特定的实例中,表单显示名称被设置为MyDocument.State#GA-Document。代号设置为MyDocument_State.GA_Document。当然,您将表单名称设置为显示名称。该文档确实存在于站点管理器的文档类型中,并在第一次加载页面时正确使用表单名称 (MyDocument.State#GA-Document) 加载。
    猜你喜欢
    • 2013-08-01
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    相关资源
    最近更新 更多