根据条件提供Gridview单元格字体颜色

时间:2014-08-20 04:02:04

标签: c# asp.net gridview

如何根据条件为gridview的单元格文本添加颜色。 我有一个下面的gridview,我正在通过后面的代码在gridview中获取数据。

 <asp:GridView ID="GridView3" runat="server" AllowPaging="true" PageSize="5"
   AutoGenerateColumns="false"  Width="100%" OnPageIndexChanging="GridView3_PageIndexChanging"
   CssClass="Grid">
                   <RowStyle CssClass="GridRow"/>
                     <Columns>
                         <asp:BoundField HeaderText="No" DataField="id" Visible="false"/>
                         <asp:BoundField HeaderText="Scenario" DataField="Scenario"/>
                         <asp:BoundField HeaderText="Type" DataField="Type"/>
                         <asp:BoundField HeaderText="Station Name" DataField="StationName"/>
                         <asp:BoundField HeaderText="Parameter" DataField="PARAM"/>
                         <asp:BoundField HeaderText="Value" DataField="Value"
                         SortExpression="Value" DataFormatString="{0:F2}"/>
                    </Columns>
                     <PagerStyle BackColor="White" Height="40px" Font-Bold="true" Font-
                      Size="Medium" ForeColor="Green" HorizontalAlign="Center"/>
                      <PagerSettings FirstPageText="First" LastPageText="Last" 
                      Mode="NumericFirstLast" PageButtonCount="3" />
                      <HeaderStyle BackColor="#ABDB78" ForeColor="Black" Height="35px" Font-
                      Size="13px" Font-Names="verdana"/>
                </asp:GridView>

我通过后面的代码将数据与此网格绑定。

   protected void ReservGridBind()
    {
        string name = Request.QueryString[1].ToString();

        string query = "SELECT SD.id,SD.Scenario,SD.Value,PR.Type,PR.StationName,PR.PARAM 
        from sgwebdb.param_reference as PR Inner join sgwebdb.scenario_data as SD 
        ON PR.Param_Id=SD.Param_Id INNER JOIN sgwebdb.qualicision_detail as Q 
        ON SD.SCENARIO=Q.Alternative where PR.Type='Reservoirs' and Q.Alternative='" + name +"'";

        this.GridView1.DataSource = PSI.DataAccess.Database.DatabaseManager
                                    .GetConnection().GetData(query);
        GridView1.DataBind();

    condition :
    if  number < 0.0 then blue colour ,
     number > 0.0 && text < 4.0 then green colour,
      number > 4.0 then red colour.

    Please help me for this gridview's cell text colour.

3 个答案:

答案 0 :(得分:6)

<强>标记

<asp:GridView ID="GridView3" runat="server" 
    AllowPaging="true" PageSize="5"
    AutoGenerateColumns="false" 
    Width="100%" 
    OnRowDataBound="GridView3_RowDataBound"       
    OnPageIndexChanging="GridView3_PageIndexChanging"
    CssClass="Grid">

代码背后

protected void GridView3_RowDataBound(object sender, GridViewRowEventArgs e)
{
     if (e.Row.RowType == DataControlRowType.DataRow)
     {
         int iText =  Convert.ToInt32(e.Row.Cells[4].Text);

         if (iText < 0)
             e.Row.Cells[4].ForeColor = System.Drawing.Color.Blue;             
         else if (iText > 0 && iText < 4)             
             e.Row.Cells[4].ForeColor = System.Drawing.Color.Green;
         else if (iText > 4)           
             e.Row.Cells[4].ForeColor = System.Drawing.Color.Red;            
     }
}

答案 1 :(得分:3)

使用下面的颜色制作一些css类

.red{
color: red} etc....

在基于条件的RowDataBound事件中,在列中添加适当的类,如下所示

protected void GridView1_DataBound(object sender, GridViewRowEventArgs e)
 {
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if (condition)
        {
              e.Row.Cells[0].CssClass = "red";
        }
     }
   }

答案 2 :(得分:0)

我没有这个事件OnRowDataBound

取决于或带来DataField =&#34; estado_orden1&#34;要在任一列中显示的文本放置不同的颜色

<telerik:radgrid id="grd_ActaProforma" runat="server" autogeneratecolumns="False" cellspacing="-1" culture="es-ES" gridlines="Both" 
    grouppanelposition="Top" resolvedrendermode="Classic" allowpaging="True" skin="MetroTouch">
           <ClientSettings>
              <Scrolling UseStaticHeaders="False"/>
           </ClientSettings>
            <MasterTableView DataKeyNames="id_acta_proforma,correlativo_orden,anio" NoDetailRecordsText="No hay detalles de actas proforma que mostrar."
                NoMasterRecordsText="No hay actas proformas que mostrar.">
                <Columns>
                    <telerik:GridButtonColumn HeaderText="" Text="  " ButtonCssClass="fa fa-pencil" CommandName="Select"
                        FilterControlAltText="Filter column column" UniqueName="column">
                        <HeaderStyle Width="2%" />
                        <ItemStyle BorderStyle="Double" HorizontalAlign="Center" ForeColor="#46464B" BackColor="#E0E4E6" />
                    </telerik:GridButtonColumn>
                    <telerik:GridBoundColumn ColumnGroupName="numero" DataField="correlativo_orden" FilterControlAltText="Filter numero column"
                        HeaderText="Correlativo" UniqueName="numero">
                        <ItemStyle HorizontalAlign="Center" Width="8%" />
                    </telerik:GridBoundColumn>
                    <telerik:GridBoundColumn ColumnGroupName="numero" DataField="anio" FilterControlAltText="Filter anio column"
                        HeaderText="Año" UniqueName="anio">
                        <ItemStyle Width="5%" />
                    </telerik:GridBoundColumn>
                    <telerik:GridDateTimeColumn DataField="fecha_orden" FilterControlAltText="Filter fecha column"
                        HeaderText="Fecha" UniqueName="fecha" DataFormatString="{0:d}">
                        <HeaderStyle HorizontalAlign="Center" />
                        <ItemStyle Width="10%" />
                    </telerik:GridDateTimeColumn>
                    <telerik:GridBoundColumn DataField="nombre_proveedor" FilterControlAltText="Filter proveedor column"
                        HeaderText="Proveedor" UniqueName="proveedor">
                        <HeaderStyle HorizontalAlign="Center" />
                    </telerik:GridBoundColumn>
                    <telerik:GridNumericColumn DataField="total_compra" DataType="System.Decimal" 
                        DecimalDigits="2" FilterControlAltText="Filter total column" 
                        HeaderText="Total Compra" NumericType="Currency" UniqueName="total">
                        <HeaderStyle HorizontalAlign="Center" />
                        <ItemStyle HorizontalAlign="Right" Width="13%" />
                    </telerik:GridNumericColumn>
                    <telerik:GridBoundColumn DataField="estado_orden1" FilterControlAltText="Filter estadoOrden column"
                        HeaderText="Condición" UniqueName="estadoOrden">
                        <HeaderStyle HorizontalAlign="Center" />
                        <ItemStyle  HorizontalAlign="Center"/>
                    </telerik:GridBoundColumn>
                    <telerik:GridHyperLinkColumn AllowSorting="False" 
                        FilterControlAltText="Filter actaR column" HeaderText="Acta Recepción" 
                        NavigateUrl="../Producto/ActaRecepcion.aspx" Text="ActaRecepcion" 
                        UniqueName="actaR">
                        <ItemStyle Font-Bold="true" ForeColor="#FF3300" />
                    </telerik:GridHyperLinkColumn>
                </Columns>
                <ColumnGroups>
                    <telerik:GridColumnGroup HeaderText="Número" Name="numero">
                        <HeaderStyle HorizontalAlign="Center" />
                    </telerik:GridColumnGroup>
                </ColumnGroups>
                <PagerStyle PageSizes="10" />
            </MasterTableView>
            <PagerStyle FirstPageToolTip="Primera Pág." LastPageToolTip="Ultima Pág." Mode="NextPrev"
    NextPagesToolTip="Siguientes Pág." NextPageToolTip="Siguiente Pág." PagerTextFormat="Cambiar Página: {4} &amp;nbsp;Pág. &lt;strong&gt;{0}&lt;/strong&gt; hasta &lt;strong&gt;{1}&lt;/strong&gt;, registros &lt;strong&gt;{2}&lt;/strong&gt; hasta &lt;strong&gt;{3}&lt;/strong&gt; de &lt;strong&gt;{5}&lt;/strong&gt;."
    PrevPagesToolTip="Páginas Anteriores." PrevPageToolTip="Página Anterior." PageSizes="10" />
        <HeaderContextMenu RenderMode="Auto">
        </HeaderContextMenu>
</telerik:radgrid>

以这种方式获得的网格数据

private void llenar_acta_grid()
        {
            BL_ACTA_PROFORMA bl = new BL_ACTA_PROFORMA();
            this.grd_ActaProforma.DataSource = bl.getViewByProveedorEstadoPendienteIncompleto();
            this.grd_ActaProforma.DataBind();
        }