我有一个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,而不是写原始代码。谢谢!
答案 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中加载分层数据。