如何根据条件为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.
答案 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} &nbsp;Pág. <strong>{0}</strong> hasta <strong>{1}</strong>, registros <strong>{2}</strong> hasta <strong>{3}</strong> de <strong>{5}</strong>."
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();
}