Kentico - Использование календаря для фильтрации событий системы бронирования

У меня много проблем с освоением Kentico CMS, но я, наконец, где-то рядом. Я использую обычный движок портала и запускаю Kentico 5.5 RC2 на локальной установке.

В настоящее время у меня есть страница событий, которая использует повторитель для отображения всех событий, доступных в системе в настоящее время. Я хочу использовать календарь, чтобы иметь возможность фильтровать события в этом ретрансляторе. Как бы я это сделал?


person David Archer    schedule 28.01.2011    source источник


Ответы (1)


Есть несколько способов.

  • Пользовательский элемент управления
  • Пользовательская веб-часть
  • Параметры строки запроса

Самым простым будет последний. Или сочетание первых двух с последним. Добавьте элемент управления календарем с помощью предпочитаемого вами метода (календарь AJAX, календарь jQuery, ‹asp:Calendar› или любой другой) и заполните его в текстовом поле. Затем запустите JavaScript, чтобы изменить строку запроса URL, которая перезагрузит страницу.

Перейдите к свойствам веб-части ретранслятора Kentico. В поле Content filter->WHERE condition можно написать стандартное предложение SQL WHERE и ввести параметры строки запроса через специальный макрос: {?QUERYSTRINGPARAMETERNAME?}. Например, http://url/page?myfilter=2 будет {?myfilter?}. Это сделало бы предложение WHERE примерно таким: {?myfilter?} = '' OR {?myfilter?} = SqlFieldToCompare.

Kentico утверждает, что они избегают этого макроса из соображений безопасности, хотя лично я этого не подтверждал. Хотя у нас работает.

Если вы использовали клиентский пользовательский элемент управления или веб-часть, вы можете использовать более безопасные методы обратной передачи с помощью макроса Control (вместо вышеуказанного макроса QueryString).

Дополнительные сведения о макросах см. в Руководстве разработчика, Приложение A Макросы.

person Jon Adams    schedule 28.01.2011
comment
Круто, это на многое отвечает. Только одна небольшая проблема для меня: я вообще не знаю, как добавить vanilla asp.net на страницу. Не могли бы вы указать мне правильное направление, чтобы выяснить, как добавить такие вещи, как текстовые поля или кнопки, пожалуйста? Также как сделать код на одной странице? (например, если я использую ‹asp:Calendar› выше, мне нужно будет нажать код C#, чтобы сказать textbox1.Text = calendar1.SelectedDate.ToShortDateString() и т. д.) Я думаю, что с этим я смогу двигаться дальше намного дальше с Kentico. Без возможности манипулировать кодом .net и программным кодом все очень сложно! - person David Archer; 31.01.2011
comment
На самом деле, я уже понял это (используя пользовательские веб-части). Теперь у меня другая проблема, я пытаюсь использовать макрос «ГДЕ», как вы указали выше, но я не знаю, как получить доступ к полям из файла. Как мне получить доступ, например, к дате события? В преобразовании я использую ‹%# Eval('EventDate') %›, и это нормально, но не могу понять, как его использовать здесь. - person David Archer; 31.01.2011
comment
Хорошая работа, отвечая на ваши собственные комментарии, прежде чем я мог ответить. :) - person Jon Adams; 01.02.2011