在gridview中更改1个单元格中的文本颜色

时间:2014-03-19 16:30:28

标签: c# asp.net gridview

我对此列有一个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;

2 个答案:

答案 0 :(得分:1)

您已在正常模式下遍历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 =&#34; gvTablaMes_RowDataBound&#34; 包含在gridview标记中。
希望这会有所帮助。让我知道这方面的任何问题。
快乐编码:)

答案 1 :(得分: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>