Расширение столбцов сетки пользователя администратора Kentico 10

Я использую Kentico 10.
Я пытаюсь отобразить новые настраиваемые столбцы в сетке пользователей. (пожалуйста, см. рисунок ниже)

Как лучше всего это сделать,
чтобы он по-прежнему работал после обновления Kentico?

введите здесь описание изображения


person Dawid Cz    schedule 02.08.2018    source источник


Ответы (2)


Лучше всего создать собственный файл XML на основе этого файла:

/CMSModules/Membership/Pages/Users/User_List.xml

и добавьте свое поле следующим образом:

<column source="##ALL##" externalsourcename="#transform:cms.user:PriceListAllowed#isnullyesno" caption="Price List Allowed" allowsorting="true"/>

Во-вторых, вам нужно создать запрос, который получит поля, которые вы ожидаете. Посмотрите в текущий файл XML, и вы увидите, что объект, на который он ссылается, является объектом, созданным в коде, и вы не можете его контролировать:

<objecttype name="cms.userlist" />

cms.userlist по существу вызывает представление View_CMS_User. У вас есть несколько вариантов:

  • Изменить существующий вид (не рекомендуется)
  • Создайте свой собственный запрос в модуле «Членство» в классе «Пользователь», который соединит таблицу cms_user с таблицей cms_usersettings и выберет « * » для списка столбцов, и он автоматически включит ваши новые столбцы.

Затем вернитесь к созданному файлу XML, удалите узел типа объекта и добавьте элемент <query> следующим образом:

<query name="cms.user.yourcustomqueryname" />

Это должно дать вам то, что вы ищете. Единственное, что может быть перезаписано при обновлении, — это путь к XML-файлу пользователей в пользовательском модуле. Так что должно быть довольно легко обновить этот путь, если он перезаписан.

person Brenden Kehren    schedule 02.08.2018
comment
Спасибо за ваш ответ. Сделал, все по инструкции. Теперь я получаю ошибку. Сообщение: столбец «UserHasPassword» не принадлежит таблице Table. . Если я закомментирую его <action name="haspassword" externalsourcename="haspassword" caption="$userlist.nopassword$" fonticonclass="icon-exclamation-triangle" fonticonstyle="warning" /> и попытаюсь отредактировать пользователя, я получу сообщение: GridView 'v' запустил событие RowEditing, которое не было обработано. - person Dawid Cz; 07.08.2018
comment
В файле XML удалите атрибут и значение столбцов. Похоже, что внутреннему коду нужно больше столбцов для выполнения других событий. - person Brenden Kehren; 07.08.2018

Вам необходимо отредактировать определение unigrid файл, расположенный по адресу ~/CMSModules/Membership/Pages/Users/User_List.xml

Я пробовал с <column source="##ALL##" externalsourcename="#transform:cms.user:PriceListAllowed#isnullyesno" caption="PriceListAllowed" allowsorting="true"/>, и это не работает. Вероятно, вам нужно добавить столбцы в запрос сетки, это означает, что вам нужно создать расширитель Unigrid (вот пример). Взгляните также на создание расширителей.

P.S. Вы также можете поместить свой столбец в пользовательские настройки и использовать его в качестве справочной таблицы. вот пример

person Peter Mogilnitski    schedule 02.08.2018
comment
Обновление только XML-файла не будет работать, так как в исходном коде Kentico создан некоторый настраиваемый тип объекта, который вы не можете изменить. В своем ответе я предоставил инструкции, которые должны привести к тому результату, который он ожидает. - person Brenden Kehren; 03.08.2018