Asp.net

如何使用 Eval 更改 TemplateField 中的顏色

  • January 27, 2015

我有一個 Gridview 包含許多 TemplateField。

我想讓<td>我的 html 原始碼中的每一個都等於保存在我的數據庫中的顏色

我嘗試程式碼位於下面但不工作它給我一個帶有我的顏色的<span>標籤但不要出現在瀏覽器上<td>

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

您需要將文本放在標籤內(呈現為跨度)

<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 或 span 中。

如果你想用一個布爾值檢查它是否為真,那麼綠色會起作用,否則紅色會起作用。然後根據 Eval 函式顯示具有相應顏色的文本。這裡 GetStatus 是一個方法,您需要在程式碼中創建它,我們將文本綁定到 UI,否則您可以像往常一樣使用 Eval 或 Bind 函式進行綁定。

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

引用自:https://stackoverflow.com/questions/14807427