Есть много способов кодирования для Kentico. Я лично нахожу API немного неуклюжим, и довольно часто меня удивляло, что не существовало метода, требующего дополнительных вызовов для получения требуемых результатов. Я чаще использую Kentico API при вводе данных в Kentico. Вытягивая его, я использую следующее.
СОХРАНЕННАЯ ПРОЦЕСС
Напишите хранимую процедуру SQL для получения первых X категорий — GetTop5Categories.
Посмотрите на таблицы COM_*, в частности COM_OrderItem, связывающие OrderItemSKUID обратно с COM_SKU (или View_COM_SKU_Joined, если вам нужно добраться до IA).
Это даст вам самые продаваемые продукты с группировкой, количеством, верхним X и заказом.
Затем вы можете ссылаться на другие таблицы, такие как CMS_Category или CMS_Document (в зависимости от того, как вы настроили свои категории). Преимущество этого заключается в том, что procs компилируются, вы выполняете все свои манипуляции с данными там (это то, на чем специализируется MSSQL!) И вы отправляете обратно только то, что вам нужно в наборе результатов.
ДОМЕН (с использованием EF)
Обычно я создаю отдельный проект библиотеки классов myproject.domain и помещаю туда Entity Framework edmx, сопоставленный с базой данных Kentico. Добавьте процесс в EDMX, затем создайте функцию Import MyProject_GetTop5Categories из недавно импортированного процесса.
ВЕБ
добавьте ссылку на проект домена из вашего веб-проекта и «использование» в верхней части кода программной части элемента управления.
используя myproject.domain;
затем в Page_Load для элемента управления:
...
if(!IsPostBack)
{
var entities = new MyProjectModelContainer();
var list = entities.MyProject_GetTop5Categories().ToList();
StringBuilder sb = new StringBuilder("<ul>");
foreach(var category in list)
{
sb.Append("<li><a href='"+category.Link+"'>" + category.Name + "</a></li>");
}
sb.Append("<ul>");
listPlaceHolder = sb.ToString();
}
написано от руки, так что, вероятно, опечатка или две там :)
ХТН
person
Ben E G
schedule
08.04.2013