2016-06-29 6 views
1

Ich habe eine MS SQL-Datenbanktabelle, die Informationen zu Kursen für ein College enthält. Dies ist die benutzerdefinierte Abfrage innerhalb des Repeaters mit benutzerdefinierter Abfrage, die derzeit in Kentico verwendet wird (ich habe dies nicht geschrieben).Kentico Transformation auf einem Repeater mit einer benutzerdefinierten Abfrage

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 

Ab jetzt werden die Klassen von Kurstitel geordnet und jeder Abschnitt ist separat ...

courseName1 - courseCode1 - courseNum1 - courseSection1 
Course Information 

courseName1 - courseCode1 - courseNum1 - courseSection2 
Course Information 

Wenn der Kursname, Kursnummer und Kursnummer gleich sind aufgeführt. .. Ich möchte, dass die Kursabschnitte darunter aufgelistet sind. Ähnlich wie diese ...

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

Ich war der beste Weg, sagte, dies zu tun wäre, um eine Transformation zu verwenden, innerhalb des Repeaters mit benutzerdefinierten Abfrage, anstatt einen Repeater innerhalb eines Repeaters setzen.

Ich dachte, der einfachste Weg, dies zu tun wäre, die CourseName, CourseCode oder CourseNum als Überschrift zu machen. Dann haben Sie eine Schleife, die prüft, ob sich die Überschrift geändert hat. Jemand hat einen Pseudocode geschrieben, aber ich bin neu bei Kentico und bin mir nicht sicher, ob das funktionieren wird/was es bedeutet.

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

Jede Hilfe wäre willkommen. Ich bin mir nicht sicher, wo ich von hier aus nach Kentico gehen und nicht den Originalcode schreiben sollte. Vielen Dank!

+0

FYI das ist kein Pseudocode, es ist K # eine Kentico spezifische Makrosprache. Mehr Informationen zur Syntax finden Sie hier: https://docs.kentico.com/display/K9/Macro+syntax Es gibt auch ein Video, das Sie hier finden können (bitte beachten Sie, dass einige Makros seither nicht mehr verfügbar sind) und mehr wurden hinzugefügt): https://vimeo.com/8197623 –

Antwort

0

Im Repeater müssen Sie Ihre Klassen auswählen. In der Transformation können Sie mithilfe der K # -Syntax alle Kurse abrufen, die der Klasse entsprechen.

Sie haben nicht geschrieben, was ist der Kurs, ist es Seitentyp? Wenn die Kurse und Klassen sind Seitentypen und die Kurse sind Childs von Klassen können Sie ähnliche Repeater-Setup:

Repeater - dafür sorgen, dass in den Spalten haben Sie NodeAliasPath

Bei der Transformation

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

Es wird alle Dokumente unter Klassen auswählen. Sie sollten diese Umwandlung optimieren, um eine bessere Leistung zu erzielen.

0

Einen geschachtelten Repeater vs. eine verschachtelte Abfrage zu haben, ist wirklich nicht anders, abgesehen davon, dass Sie Caching auf dem Repeater setzen können, während es bei einer Abfrage ein bisschen schwieriger ist. Meiner Meinung nach ist es am besten, dafür eine custom transformation method zu schreiben. Auf diese Weise können Sie das Caching festlegen und Ihre Abfrage optimieren, damit Ihr System nicht belastet wird.

Eine weitere Option ist das Einrichten der Daten in einem hierarchischen Format. Dann können Sie den hierarchischen Viewer verwenden, um Ihre Daten anzuzeigen, die meiner Meinung nach für solche Dinge optimiert sind. Here is a good article zum Laden hierarchischer Daten in Kentico.

Verwandte Themen