3

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

我想在单选器中使用自定义表。

我遇到这个问题的原因是,我需要使用自定义表单控件,例如 SiteManager->Users Advanced 过滤器。我们有添加角色,它会打开一个弹出窗口,并显示所有角色的列表。

此 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"

这行不通

任何帮助表示赞赏。提前致谢。

4

3 回答 3

10

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

ObjectType="customtableitem.namespace.customtable"

这将是

ObjectType="customtableitem.customtable.SampleTable"

用于示例自定义表(来自企业示例站点)。

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

于 2013-03-27T08:32:57.953 回答
1

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

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

  1. 您可以开发自定义表单控件而不是使用 UniSelector ->开发人员指南 - 开发表单控件
  2. 使用内置的下拉列表控件
  3. 修改UniSelector表单控件 - 您将在文件 ~\CMSAdminControls\UI\UniSelector\UniSelector.ascx.cs 的 LoadObjects() 方法中加载 DataSet
于 2013-03-26T14:37:18.747 回答
0

我们已经更改了 uniselector.ascx,记住 kentico 可以在更新时覆盖它,使用这个 CMSAdminControls

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

  1. CustomUniSelector.ascx
  2. CustomSelectionDialog.ascx

将方法 Loadobject 更改为给定 url ~/CMSAdminControls/Mycustomcontrol/CustomSelectionDialog.aspx

而不是更改 CustomSelectionDialog.ascx.cs 中的 LoadControls() 方法

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

于 2013-03-26T15:25:52.307 回答