2017-02-17 5 views
0

Gibt es eine Möglichkeit, auf die Eigenschaften eines Webparts zuzugreifen, wenn ich die Repeater-Vorlage verwende (oder umgekehrt)?Zugriff auf Webpart-Eigenschaften in CMSRepeater Vorlage

<div ID="RepeaterWrapper" runat="server"> 
    <cms:CMSRepeater ID="repItems" runat="server"> 
     <ItemTemplate> 
      <div class="col-sm-4"> 
       <!-- I want to access this div in my code behind or else have it access a property from the code behind--> 
      </div> 
     </ItemTemplate> 
    </cms:CMSRepeater> 
</div> 

Ich möchte die innere divs bg Farbe setzen, und ich kann nicht Klassen verwenden, da die Eigenschaft als hexadezimalen Farb gegeben wird, so dass es ein paar tausend Klassen bedeuten würde!

Worst Case Szenario Ich kann es mit einigen js tun, würde aber eher eine "reinere" Art, es zu tun, wenn es existiert.

Vielen Dank im Voraus

Antwort

2

Angenommen, Ihre Datenquelle hat diese Hintergrundfarbe in den zurückgegebenen Daten. Sobald Sie Ihre Datenquelle an den Repeater binden, haben Sie Zugriff darauf innerhalb der Elementvorlagen. so etwas wie dieses einfach verwenden:

<div class="col-sm-4 <%# Eval("BgColorColumnName") %>">

Nun, wenn Sie einen Wert aus der tatsächlichen webpart festlegen möchten selbst, müssen Sie die Eigenschaft stellen Sie sicher, ein öffentliches Eigentum ist, dann können Sie so etwas wie verwenden:

<div class="col-sm-4 <%# YourPublicPropertyName %>">

+0

Nur für die Klarheit, wollte es die Eigenschaft aus dem Webpart selbst. Ich habe immer 'control.Attributes [' css '] + = value' im Code hinter dem – rory

+1

@rory verwendet, das ist der empfohlene Ansatz. Ich würde schrecken Dinge in der Ascx-Layout-Datei wie folgt vor, hauptsächlich weil ein Endbenutzer die Ascx-Layout-Datei in der Kentico UI bearbeiten kann. –

0

Sind alle Einzelteile gehen die gleiche Farbe haben? Wenn es pro Element ist, dann ändern Sie die Elemente, die Sie ziehen, um den Wert einzuschließen.

0

Wenn dies in der Portal-Methode war, könnten Sie den XML-Code aus der Page Template-Tabelle abrufen und Werte daraus abrufen. Da es sich nur um Code handelt und es sich um einen Repeater handelt, müssen Sie die Daten normalerweise außerhalb des Repeaters selbst (in den von Ihnen wiederholten Elementen oder in den aktuellen Seitenformdaten) speichern.

Wenn Sie von einem Macro aus darauf zugreifen können, können Sie CMS.MacroEngine.MacroContext.Current.ResolveMacro() verwenden, um das Problem zu beheben und den Wert zu ermitteln.

Können Sie uns ein wenig mehr Informationen darüber geben, wo die div BG-Farbe gespeichert werden würde? warum muss es im Repeater selbst sein?

Verwandte Themen