Kentico的Uniselector自定义表

本文关键字:自定义 Uniselector Kentico | 更新日期: 2023-09-27 18:05:32

我一直使用Kentico没有问题一段时间,直到今天,这是我的问题

我想在unelector中使用自定义表。

我是如何进入这个问题的,我需要使用自定义表单控件,如在SiteManager->Users Advanced filter。我们有添加角色,打开一个弹出窗口,它显示所有角色的列表。

这个web部件使用了Uniselector

<cms:CMSUpdatePanel ID="pnlUpdate" runat="server">
    <ContentTemplate>
        <cms:UniSelector ObjectType="cms.role" SelectionMode="MultipleTextBox"
            OrderBy="RoleDisplayName" ResourcePrefix="roleselect" runat="server"
            ID="usRoles" ShortID="s" AllowEditTextBox="true" AddGlobalObjectSuffix="true" />
    </ContentTemplate>
</cms:CMSUpdatePanel>  

现在如果我使用

ObjectType="cms.role" 

它工作得很好,因为它是系统表

现在如果我使用

ObjectType="customtable.country"

这行不通

任何帮助都是感激的。

Kentico的Uniselector自定义表

从版本7开始,您可以使用:

ObjectType="customtableitem.namespace.customtable"

应该是

ObjectType="customtableitem.customtable.SampleTable"

为样例自定义表(来自公司样例站点)。

如果您有任何问题,请随时与我联系。

不幸的是,UniSelector在设计上需要Kentico对象类型,它不适用于自定义表。

但是,基本上有三种可能的解决方案:

  1. 您可以开发自定义表单控件而不是使用UniSelector ->开发人员指南-开发表单控件
  2. 使用内置的下拉列表控制
  3. 修改UniSelector表单控件-你将加载你的数据集在LoadObjects()方法在文件~'CMSAdminControls'UI'UniSelector'UniSelector. asx .cs

我们已经改变了unelector。Ascx,记住kentico可以在更新时覆盖它使用这个CMSAdminControls

我使用这种方法并获得成功创建新页面

  1. CustomUniSelector.ascx
  2. CustomSelectionDialog.ascx

将Loadobject方法更改为giveurl ~/CMSAdminControls/Mycustomcontrol/CustomSelectionDialog.aspx

CMSObjectHelper.GetObject()方法无法从自定义表中获取数据,因此添加了从自定义表中获取数据的新方法