2017-02-17 51 views
0

有什麼方法可以通過使用中繼器的模板訪問Web部件的屬性(反之亦然)?從CMSRepeater模板中訪問Web部件屬性

<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> 

我想設置內部div的背景色和屬性是作爲一個十六進制顏色我不能使用類,因此這將意味着幾千個班!

最糟糕的情況我可以用一些js做到這一點,但如果它存在的話,寧願採用「更純粹」的方式。

在此先感謝

回答

2

假設您的數據源在返回的數據中具有該背景色,一旦將數據源綁定到中繼器,您就可以訪問項目模板中的數據源。只需使用是這樣的:如果你想從實際的WebPart自身設定的值

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

現在,你需要確保該屬性是公共財產,那麼你可以使用類似:

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

+0

只是爲了清楚起見,它是從we​​bpart本身想要的財產。我一直在使用'control.Attributes ['css'] + = value'代碼,直到現在爲止,推薦的方法是 – rory

+1

@ rory。我會避免在ascx佈局文件中設置這樣的東西,這主要是因爲最終用戶可以編輯Kentico UI中的ascx佈局文件。 –

0

是否所有的項目都具有相同的顏色?如果它的每個項目,然後修改您正在拉的項目,以包括該值。

0

如果這是門戶方法,您可以從頁面模板表中獲取XML並從中獲取值。由於它完全來自代碼,並且它是一箇中繼器,所以通常需要將數據存儲在中繼器本身之外的某個位置(在您重複的項目中,或在當前頁面表單數據中)。

如果您可以從宏的任何位置訪問它,則可以使用CMS.MacroEngine.MacroContext.Current.ResolveMacro()來解決該問題並獲取該值。

你可以給我們一些關於div BG顏色存儲位置的信息嗎?爲什麼它必須在中繼器本身?