Пользовательская таблица в Uniselector в Kentico

Я использовал Kentico без проблем некоторое время до сегодняшнего дня, вот моя проблема

Я хочу использовать пользовательскую таблицу в uniselector.

Как я столкнулся с проблемой, мне нужно использовать настраиваемые элементы управления формой, например, в фильтре SiteManager-> Users Advanced. У нас есть «Добавить роли», который открывает всплывающее окно и показывает список всех ролей.

Эта веб-часть использует 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"

так не пойдет

Любая помощь приветствуется. Заранее спасибо.


person Nipun Ambastha    schedule 22.03.2013    source источник


Ответы (3)


Начиная с версии 7 вы можете использовать:

ObjectType="customtableitem.namespace.customtable"

это было бы

ObjectType="customtableitem.customtable.SampleTable"

для образца пользовательской таблицы (с корпоративного образца сайта).

Не стесняйтесь обращаться ко мне, если у вас есть какие-либо другие вопросы.

person rocky    schedule 27.03.2013
comment
Мы попробуем, если это так просто, это будет действительно потрясающе :) - person Nipun Ambastha; 28.03.2013
comment
Привет, Рокки, я попробовал твое решение, оно действительно хорошее и работает нормально. Могу ли я узнать, как установить iObjectType.DisplayNameColumn , по умолчанию он принимает ItemGUID, и я хочу установить другое имя столбца в iObjectType.DisplayNameColumn. - person Prashant Mehta; 28.03.2013
comment
Здравствуйте, установите DisplayNameFormat={%DisplayNameColumn%}. - person rocky; 28.03.2013
comment
Я нашел решение, только что передав AdditionalSearchColumns=DisplayNameColumn. это добавляет условие ИЛИ с существующим условием поиска. - person Prashant Mehta; 29.03.2013

К сожалению, UniSelector по своей конструкции требует типов объектов Kentico и не работает для пользовательских таблиц.

Тем не менее, есть в основном три возможных обходных пути:

  1. Вы можете разработать собственный элемент управления формой вместо использования UniSelector -> Руководство разработчика - Разработка формы элементы управления
  2. Используйте встроенный элемент управления Раскрывающийся список.
  3. Измените элемент управления формой UniSelector — вы загрузите свой DataSet методом LoadObjects() в файл ~\CMSAdminControls\UI\UniSelector\UniSelector.ascx.cs
person Filip Ligac    schedule 26.03.2013
comment
Привет Филип, Спасибо за обновление. Мы сделали это, используя 1 и 3 точки, и это делает то, что ожидается. - person Nipun Ambastha; 26.03.2013

мы изменили uniselector.ascx, имея в виду, что kentico может перезаписать его при обновлении, используйте этот CMSAdminControls

Я использую этот подход и добиваюсь успеха Создал новые страницы как

  1. CustomUniSelector.ascx
  2. CustomSelectionDialog.ascx

Измените метод Loadobject, указав URL-адрес ~/CMSAdminControls/Mycustomcontrol/CustomSelectionDialog.aspx

чем изменить метод LoadControls() в CustomSelectionDialog.ascx.cs

Метод CMSObjectHelper.GetObject() не получает данные из пользовательской таблицы, поэтому добавлен новый метод для получения данных из пользовательской таблицы.

person Prashant Mehta    schedule 26.03.2013