Kentico v8 Uniselector未选择自定义文档类型

时间:2014-08-04 00:51:55

标签: kentico

在Kentico v8的Uniselector控件中,我们需要输入什么对象类型来选择自定义文档类型?

在Kentico v7.0.34中,我们成功使用UniSelector选择自定义文档类型,如下所示;

  • 对象类型: customtableitem.custom.Course
  • 返回列名: CourseID
  • 显示名称格式: {%Name%}
  • 选择模式:多个
  • 排序依据:名称

但是在Kentico v8.0.17中,使用上述值时会出现以下错误;

[CustomTableItemProvider.GetTypeInfo]:“custom.course”类不是自定义表格。

Server Error in '/' Application.
[CustomTableItemProvider.GetTypeInfo]: Class 'custom.course' is not custom table.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Exception: [CustomTableItemProvider.GetTypeInfo]: Class 'custom.course' is not custom table.

Source Error:


Line 1094:    private void LoadObjects()
Line 1095:    {
Line 1096:        if (Object != null)
Line 1097:        {
Line 1098:            // Reset string builder


Source File: c:\Visual Studio\Projects\Kentico8\CMS\CMSAdminControls\UI\UniSelector\UniSelector.ascx.cs    Line: 1096 

我们尝试按如下方式更改对象类型;

  • 对象类型: custom.Course

此结果是以下错误;

找不到对象类型'custom.course'。

Server Error in '/' Application.
Object type 'custom.course' not found.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Exception: Object type 'custom.course' not found.

Source Error:


Line 1094:    private void LoadObjects()
Line 1095:    {
Line 1096:        if (Object != null)
Line 1097:        {
Line 1098:            // Reset string builder


Source File: c:\Visual Studio\Projects\Kentico8\CMS\CMSAdminControls\UI\UniSelector\UniSelector.ascx.cs    Line: 1096 

我已阅读文档available here,对于Object类型,它提供了“cms.user”的示例值。将对象类型设置为“cms.user”确实可以用于选择CMS用户。

我还创建了一个名为“Test”的自定义表,并且可以确认将对象类型设置为“customtableitem.customtable.Test”可以用于选择自定义表项。

我也在Kentico的dev.net Q& A网站上问过这个问题。 https://devnet.kentico.com/questions/uniselector-in-kentico-v8

干杯,

的Darren

1 个答案:

答案 0 :(得分:1)

快速回答:

ObjectType: cms.documenttype
Return column name: ClassID
Display name format: {%ClassDisplayName%}

答案很长: 文档类型定义(以及自定义表和联机表单定义)位于CMS_Class表中。要检索它们,您可以使用更通用的"cms.class"或更具体的"cms.documenttype""cms.customtable"对象类型。所以你应该能够使用ObjectType做同样的事情:cms.class + Where condition:ClassIsDocumentType = 1.

您尝试做的是检索数据而不是数据的类定义。所谓的"类的数据"存储在自己的表中。每个自定义表都有自己的表,每个在线表单都有自己的表,文档存储在CMS_TreeNode/CMS_Document表中。

顺便说一下 - 已经有一个用于选择类的表单控件。看看:

 \CMS\CMSFormControls\Classes\SelectClassNames.ascx

要区分自定义类和预定义类,我建议您为对象使用一些前缀,并使用ClassName LIKE "myprefix%"选择它们,或者只使用id条件ClassID > 4478