2010-09-17 49 views
0

我有一個griview,它是綁定到sqldatasource並動態更改的。如何根據值更改背景單元格的顏色?例如0-0.5綠,0.5-1紅等。ASP.NET gridview動態更改單元格背景

<asp:GridView ID="grid1" runat="server" AutoGenerateColumns="False" 
     DataSourceID="SqlDataSource3"> 

回答

3

你可能想使用的的RowDataBound事件GridView,像這樣:

<asp:GridView ID="grid1" runat="server" AutoGenerateColumns="False" 
    DataSourceID="SqlDataSource3" OnRowDataBound="ChangeRowColor"> 

protected void ChangeRowColor(object sender, GridViewRowEventArgs e) 
{ 
    if(((DataRow)e.Row.DataItem)[1] == .5) 
    { 
    e.Row.Cell[1].BackColor = Colors.Green; 
    } 
} 

在我的示例中,我假設用於填充網格的數據是DataRows(即,從一個數據表),但本質上的想法是將當前行的DataItem轉換爲綁定到的任何類型的對象,檢查所需屬性的值,然後設置相應單元格的BackColor。

您也可以檢查單元格的文本屬性,但是您可能必須執行額外的解析或不從字符串中獲取任何想要比較的值。

1

一個解決方案是創建一個服務器方法,您可以在數據綁定期間調用,它將返回一個css類的名稱。

將css類屬性綁定到對此方法的調用,並傳遞適當的數據元素。

這是一個概念的例子,你必須根據你的用途來調整它。

... CSS文件

.NegativeMoneyText 
{ 
    color: #FF0000; 
} 

... aspx文件

<asp:Label ID="lblPaid" runat="server" CssClass='<%# getMoneyCssClass(Eval("PAID_AMOUNT").ToString()) %>' Text='<%# formatMoney(Eval("PAID_AMOUNT").ToString()) %>'></asp:Label> 

...代碼背後

public string getMoneyCssClass(string amount) 
{ 
    if (!string.IsNullOrEmpty(amount)) 
    { 
     double val = double.Parse(amount); 
     if (val < 0) 
      return "NegativeMoneyTextCss"; 
    } 
    return return "PositiveMoneyTextCss"; 
} 
相關問題