2013-02-11 29 views
8

Tôi có Gridview chứa nhiều TemplateField.
Tôi muốn làm cho mỗi <td> trong nguồn html của tôi bằng màu sắc được lưu trong cơ sở dữ liệu của tôi
Tôi thử mã Nằm dưới đây nhưng không làm việc đó cho tôi một thẻ <span> bên <td> với màu sắc của tôi, nhưng Nhưng đừng xuất hiện trên trình duyệtCách thay đổi màu trong TemplateField bằng cách sử dụng Eval

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

mã C# làm việc

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

và đây là html và mã nguồn css trong trình duyệt của tôi

  <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

không có văn bản trong khoảng để không có màu nào trong nhóm sau –

+0

ý của bạn là gì ** mỗi td ** –

Trả lời

4

Bạn cần đặt văn bản bên trong của Label của bạn (mà ám vào một khoảng)

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

Bạn cũng có thể thích sử dụng một Panel (mà ám vào một div) chứ không phải là Nhãn. Đừng quên đặt những thứ bên trong div hoặc span.

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

Hãy thử mã này ..........

3

Nếu bạn muốn kiểm tra với một giá trị boolean nếu nó là đúng thì màu xanh màu đỏ khác sẽ có hiệu lực. Sau đó hiển thị văn bản có màu tương ứng theo hàm Eval. Ở đây GetStatus là một phương thức bạn cần để tạo nó trong mã phía sau với nó, chúng ta ràng buộc văn bản với giao diện người dùng, nếu không bạn có thể liên kết với hàm Eval hoặc Bind như bình thường.

ForeColor='<%# (bool)Eval("UserType")==true?System.Drawing.Color.Green:System.Drawing.Color.Red %>' 
           Text='<%# GetStatus((bool)Eval("UserType")) %>'> 
Các vấn đề liên quan