2013-12-09 16 views
0

我已经使用了以下两种来源,试图达到我需要什么:复选框列表自定义Kentico CMS形式的用户控制

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中添加控件,我也很困惑,无法找到有关控件范围字段的含义和上下文以及下一个选项卡上的属性的更多信息。

我遵循文档中描述的内容并将控件添加到文档类型的表单中。当我去编辑数据时,我只是收到一条消息,指出加载控件时出现错误,我没有获得更多信息,我也尝试过调试Kentico来一步一步地运行它,没有跟踪我的问题的运气....

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

编辑:嗨再次,

所以我决定回到基础,看看是否我可以创建任何形式的控制...... 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

首先,您应该在Site manager中的事件日志中看到有关错误的详细信息。其次,如果你想拥有简单的复选框列表,你为什么不使用集成的Multiple choice表单控件。如果您在现场设置中选择它,您可以填写查询。

+0

嗨,这是有益的,我找不到日志Kentico创建。但是,我无法执行多选表单控件,因为我想要填充的数据来自不同的数据源。此外,事件日志提供的信息非常有限,除了它告诉我控制无法加载的事实之外。 – Roooss

+0

好吧,它告诉你'CMSApp.CMSFormControls.TestControl'类型不能被加载。这是一个.NET错误,webcontrol本身不编译。我建议从一个非常简单的东西开始,比如一个空的控件(只有默认的框架)。同样从错误消息看来,您正在使用网络应用程序而不是网站。如果是这种情况,请确保在任何更改后编译整个解决方案。 – mivra