2013-04-09 116 views
0

我有一個帶有列表視圖的頁面,它具有div。這div有根據數據庫信息不同的背景顏色:將樣式屬性設置爲列表視圖中的div

<asp:ListView ID="lvwPostArt" runat="server" DataSourceID="odsAdvanced" GroupItemCount="3" OnItemDataBound="lvwPostArt_ItemDataBound"> 
     <EmptyDataTemplate> 
      <p>No matches.</p> 
     </EmptyDataTemplate> 
     <LayoutTemplate> 
      <table style="border: none"> 
       <asp:PlaceHolder ID="groupPlaceholder" runat="server"></asp:PlaceHolder> 
      </table> 
     </LayoutTemplate> 
     <GroupTemplate> 
      <tr> 
       <asp:PlaceHolder runat="server" ID="itemPlaceholder"></asp:PlaceHolder> 
      </tr> 
     </GroupTemplate> 
     <ItemTemplate> 
      <td> 
      <!--HEEEEEEEERE'S THE DIV!!! --> 
       <div id="divContainer" class="icondetail" runat="server" style='background-color:<%# Eval("colorFondo") %>'><!-- HERE GOES CUSTOM COLOR --> 
         <div class="innerBox"> 
          <asp:Image runat="server" ID="img_Post" ImageUrl='<%# Eval("ImageThumbnail") %>' CssClass="StaticImage" /> 
         </div> 
       </div> 
      </td> 
     </ItemTemplate> 
    </asp:ListView> 

但是這不是接收的顏色。 ObjectDataSource控件具有以下DataObjectTypeName:

public class myImage 
{ 
    string colorFondo { get; set; } 
    string ImageThumbnail { get; set; } 
} 

這裏是我試過到目前爲止:

嘗試#1:直接將數據綁定的DIV的風格。

<div id="divContainer" class="icondetail" runat="server" style='background-color:<%# Eval("colorFondo") %>'> 

嘗試#2:通過使用屬性後面設置上的代碼信息的ItemDataBound

protected void lvwPostArt_ItemDataBound(object sender, ListViewItemEventArgs e) 
    { 
     ListViewDataItem dataItem = (ListViewDataItem)e.Item; 

     if (e.Item.ItemType == ListViewItemType.DataItem) 
     { 
      HtmlGenericControl divCont = (HtmlGenericControl)e.Item.FindControl("divContainer"); 
      divCont.Style.Add("background-color", "#ffffff"); //How can I get the info from the DataClass to assign it to the property???? 
     } 
    } 

我的問題是,我怎麼可以指定一個背景顏色來這個div?

+0

您可以訪問' colorFondo'屬性由'(e.Item.DataItem as myImage).colorFondo'。 '<%#Eval(「colorFondo」)%>'應該可以工作;你檢查生成的HTML嗎? – mshsayem 2013-04-09 03:41:59

回答

0

喜歡這樣

DataRowView rowView = (DataRowView)dataItem.DataItem; 
divCont.Style.Add("background-color", rowView["colorFondo"].ToString()); 

或類似這樣的

var myImg = e.Item.DataItem as myImage; 
divCont.Style.Add("background-color", myImg.colorFondo); 
+0

只是偉大的!非常感謝你和mshsayem!對不起,我以前沒有回覆,我在我的電腦上苦於BSOD,因此不斷重啓:S – 2013-04-09 04:06:51

+0

當然,歡迎您! :) – 2013-04-09 04:08:26

0

你幾乎沒有......你的第二次嘗試時,只用這一個

divCont.Attributes.Add("style", "background-color:#ffffff"); 
+0

什麼是他已經做了什麼,divCont.Style做同樣的事情你正在做的屬性 – 2013-04-09 04:03:01

相關問題