2014-03-19 69 views
0

我有一個GridView與此列:更改文本顏色在1個細胞中的GridView

<asp:TemplateField HeaderText="Importe" SortExpression="importe"> 
<EditItemTemplate> 
    <asp:Label ID="lblImporte" runat="server" Text='<%# Eval("importe") %>'></asp:Label> 
</EditItemTemplate> 
<ItemTemplate> 
    <asp:Label ID="lblImporte" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "importe", "{0:#,##0.00}") %>'></asp:Label> 
</ItemTemplate> 
<ItemStyle ForeColor="Red" /> 

默認情況下,文本顏色爲紅色。以編程方式比較兩個量,我需要更改字體顏色。

在我的代碼有

Label lblImporte = (Label)gvTablaMes.Rows[e.RowIndex].FindControl("lblImporte"); 

我這種嘗試沒有成功。

lblImporte.ForeColor = System.Drawing.Color.Green; 

我認爲我必須使用類似的東西,但我不知道如何使用索引的列(我寫了一個X)

gvTablaMes.Rows[e.RowIndex].Cells[X].ForeColor = System.Drawing.Color.Green; 

回答

0

嘗試在Page_Load中改變()方法例如,

protected void Page_Load(object sender, EventArgs e) 
{ 

    Label1.ForeColor = System.Drawing.Color.Orange; 

} 

<form id="form1" runat="server"> 
<div> 

    <asp:Label ID="Label1" runat="server"></asp:Label> 

</div> 
</form> 
+0

我不能這樣做,因爲在Page_Load我還沒有創建gridview呢...... – mpl

1

如果將t在正常模式下顛覆了gridview。但是您需要查找的標籤控件位於edittemplate中。
爲此,在代碼隱藏文件中包含以下Rowdatabound事件。

protected void gvTablaMes_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if ((e.Row.RowState == DataControlRowState.Edit) || (e.Row.RowState == (DataControlRowState.Edit | DataControlRowState.Alternate))) 
     { 
      // the above checking is to verify whether the rows as well as alternating rows are in edit mode 
      Label lblImporte = (Label)e.Row.FindControl("lblImporte"); 
      lblImporte.ForeColor = System.Drawing.Color.Green; 
     } 
    } 

而且不要忘記包括OnRowDataBound = 「gvTablaMes_RowDataBound」到GridView標籤。
希望這可以幫助。讓我知道這個問題。
快樂編碼:)