复选框列表自定义Kentico CMS表单用户控件

时间:2013-12-09 14:28:20

标签: c# .net user-controls custom-controls kentico

我使用以下两个来源尝试实现我的需求:

http://devnet.kentico.com/Forums.aspx?forumid=62&threadid=28842 &安培; http://devnet.kentico.com/docs/devguide/index.html?developing_form_controls.htm

我正在尝试使用从Db表中绘制的值集合来填充列表。然后,我希望Kentico存储选定的值,以便以后通过API使用。

page_load事件确保复选框列表包含项目。我想我开始感到困惑的地方是我需要覆盖Value和IsValid来创建这个以逗号分隔的选定值列表,以便存储在Kentico中。

我已经能够构建它并在Kentico中添加控件,我也很困惑,无法找到有关控制范围字段的含义和上下文以及下一个选项卡上的属性的更多信息。

我按照文档中描述的内容将控件添加到doc类型的表单中。当我去编辑数据时,我只是收到一条消息,说加载控件时出错,我没有得到进一步的信息,我也尝试调试Kentico一步一步地运行它,没有运气跟踪我的问题...... / p>

我的问题基本上是,我知道我做错了所以如何在Kentico中设置一个Checkbox列表用户控件?任何人都可以提供一些处理此问题的演示代码或指出我正确的方向吗?

编辑:嗨再次,

所以我决定回到基础,看看我是否可以创建任何表单控件... http://devnet.kentico.com/docs/devguide/index.html?developing_form_controls.htm

我按照上面的指南写了这封信。但是,我看到Doc类型表单上出现相同的错误。它无法加载控件的类型....我也可以提供相关的事件日志....

Source: FormEngine

EventCode: LOADFORMCONTROL

UserName: administrator

IPAddress: ::1

EventDescription: Message: Could not load type 'CMSApp.CMSFormControls.TestControl'. 
Stack Trace: 
   at System.Web.UI.TemplateParser.ParseString(String text, VirtualPath virtualPath, Encoding fileEncoding)
   at System.Web.UI.TemplateParser.ParseFile(String physicalPath, VirtualPath virtualPath)
   at System.Web.UI.TemplateParser.Parse()
   at System.Web.Compilation.BaseTemplateBuildProvider.get_CodeCompilerType()
   at System.Web.Compilation.BuildProvider.GetCompilerTypeFromBuildProvider(BuildProvider buildProvider)
   at System.Web.Compilation.BuildProvidersCompiler.ProcessBuildProviders()
   at System.Web.Compilation.BuildProvidersCompiler.PerformBuild()
   at System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath)
   at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
   at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
   at System.Web.Compilation.BuildManager.GetVPathBuildResult(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean ensureIsUpToDate)
   at System.Web.UI.TemplateControl.LoadControl(VirtualPath virtualPath)
   at CMS.FormControls.EditingFormControl.InitializeControl(FormUserControlInfo ci, String controlCodeName, FormFieldInfo ffi, String defaultValue, Object value)
   at CMS.FormControls.EditingFormControl.CreateControl(FormFieldInfo ffi)

Could not load type 'CMSApp.CMSFormControls.TestControl'.
   at System.Web.UI.TemplateParser.ProcessException(Exception ex)
   at System.Web.UI.TemplateParser.ParseStringInternal(String text, Encoding fileEncoding)
   at System.Web.UI.TemplateParser.ParseString(String text, VirtualPath virtualPath, Encoding fileEncoding)

Could not load type 'CMSApp.CMSFormControls.TestControl'.
   at System.Web.UI.TemplateParser.GetType(String typeName, Boolean ignoreCase, Boolean throwOnError)
   at System.Web.UI.TemplateParser.ProcessInheritsAttribute(String baseTypeName, String codeFileBaseTypeName, String src, Assembly assembly)
   at System.Web.UI.TemplateParser.PostProcessMainDirectiveAttributes(IDictionary parseData)

这令人难以置信地令人沮丧,因为关于自定义表单控件的创建以及我看到的错误信息确实没有更多的信息,这些信息远远不如信息性的imo。

1 个答案:

答案 0 :(得分:1)

首先,您应该在站点管理器中的事件日志中看到有关错误的详细信息。

其次,如果您想拥有简单的复选框列表,为什么不使用集成的Multiple choice表单控件。如果您在字段设置中选择它,则可以使用查询填充它。