2013-02-11 36 views
8

我有一個Gridview包含許多TemplateField。
我想使我的HTML源每<td>等於顏色保存在我的數據庫
我嘗試代碼下方,但不工作這是給我的內心<td>我的顏色,但一個<span>標籤,但不會出現在瀏覽器如何使用Eval在TemplateField中更改顏色

<asp:TemplateField HeaderText="BackGround Color"> 
    <ItemTemplate> 
      <asp:Label ID="lblBackColor" runat="server" 
        BackColor='<%# ConvertFromHexToColor(Eval("BackColor").ToString()) %>'> 
      </asp:Label> 
      <itemstyle width="20%" horizontalalign="Center" /> 
    </ItemTemplate>  
</asp:TemplateField> 

C#代碼工作

public Color ConvertFromHexToColor(string hex) 
{ 
    string colorcode = hex; 
    int argb = Int32.Parse(colorcode.Replace("#", ""), NumberStyles.HexNumber); 
    Color clr = Color.FromArgb(argb); 
    return clr; 
} 

這是源HTML和CSS代碼在瀏覽器中

  <td> 
       <span id="BodyZone__ThemesGrid_lblForeColor_0" style="background-color: #FFFFFF;"></span> 
       <itemstyle width="20%" horizontalalign="Center"> 
        </itemstyle> 
      </td> 

CSS

table.activity_datatable td { 
padding: 8px 15px; 
color: #6c6c6c; 
vertical-align: middle; 
-webkit-transition: all 0.2s; 
} 
+1

沒有文本跨度,所以沒有顏色在backgroupnd – 2013-02-11 07:11:20

+0

你是什麼意思**每個td ** – 2013-02-11 07:17:47

回答

4

您需要將您的標籤(這使得一個跨度)的內部文本

<asp:TemplateField HeaderText="BackGround Color"> 
    <ItemTemplate> 
    <asp:Label ID="lblBackColor" runat="server" BackColor='<%# ConvertFromHexToColor(Eval("BackColor").ToString()) %>'>PUT_TEXT_HERE</asp:Label> 
    <itemstyle width="20%" horizontalalign="Center" /> 
    </ItemTemplate> 
</asp:TemplateField> 

您也可能更喜歡用面板(呈現一個DIV )而不是標籤。不要忘記把東西放在div或跨度內。

2
ForeColor='<%# Convert.ToString(Eval("ESM")) == "Elective" ? System.Drawing.Color.Green: 
      Convert.ToString(Eval("ESM")) == "Emergency" ? System.Drawing.Color.Red: System.Drawing.Color.Purple%>' 

試試這個代碼..........

3

如果你想檢查與一個布爾值,如果爲真,則綠色否則紅色將影響。然後根據Eval函數顯示相應顏色的文本。這裏GetStatus是一個你需要在代碼後面創建它的方法,我們將文本綁定到UI,否則你可以像往常一樣綁定Eval或Bind函數。

ForeColor='<%# (bool)Eval("UserType")==true?System.Drawing.Color.Green:System.Drawing.Color.Red %>' 
           Text='<%# GetStatus((bool)Eval("UserType")) %>'>