使用自定义查询对转发器进行Kentico转换

时间:2016-06-29 23:37:38

标签: sql transformation kentico

我有一个MS SQL数据库表,其中包含有关大学课程的信息。这是转发器内部的自定义查询,其中包含当前在Kentico中使用的自定义查询(我没有写这个)。

SELECT 'ALL' AS Course,
'All' AS CourseProgram,
'1' as ID

UNION

SELECT DISTINCT SUBJ_CODE AS COURSE
SUBJ_DESC AS CourseProgram,
NULL AS ID
ORDER BY ID DESC, Course

截至目前,课程按课程名称排序,每个部分单独列出......

courseName1 - courseCode1 - courseNum1 - courseSection1
Course Information

courseName1 - courseCode1 - courseNum1 - courseSection2
Course Information

如果课程名称,课程代码和课程编号相同......我希望课程部分列在下面。与此类似......

courseName1 - courseCode1 - courseNum1
--- courseSection1 - Course Information
--- courseSection2 - Course Information

我被告知最好的方法是使用自定义查询在Repeater内部进行转换,而不是将转发器放在转发器内。

我认为最简单的方法是将courseName,courseCode或courseNum作为标题。然后有一个循环,检查标题是否已更改。有人写了一些伪代码,但我是Kentico的新手,并不确定这会起作用/意味着什么。

{%
heading = courseNum
isNewHeading = true;
If(isNewHeading) {
text = "<option value=\""+Course+"\">"+courseProgram+"</option>";
courseNum
}
return text;
#%}

任何帮助将不胜感激。我不知道从哪里开始去Kentico,而不是写原始代码。谢谢!

2 个答案:

答案 0 :(得分:0)

在转发器中,您需要选择您的班级。在转换中,您可以使用K#语法来检索与该类匹配的所有课程。

你没写过什么是课程,是页面类型吗? 如果课程和课程是页面类型,课程是课程的孩子,您可以设置类似的中继器:

Repeater - 确保列中有NodeAliasPath

在转型中

{%CourseName%} {%CourseSection%} {%CourseNum%}
{% Documents[NodeAliasPath].Children.WithAllData.ApplyTransformation("namespace.class.transformationcodename") %}

它将选择课程下的所有文件。您应该优化此转换以获得更好的性能。

答案 1 :(得分:0)

嵌套转发器与嵌套查询实际上并没有什么不同,除了可以在转发器上设置缓存,而查询则相当困难。在我看来,你最好的选择是写一个custom transformation method。这样,您就可以设置缓存并优化查询,这样就不会对您的系统造成负担。

另一种选择是以分层格式进行数据设置。然后,您可以使用分层查看器来显示您的数据,在我看来,这些数据已针对此类内容进行了优化。 Here is a good article在Kentico中加载分层数据。