Introduction:
In this article we'll see how to change the color of column based on the column value.
We'll consider the Northwind Database and Products Table. We have a field UnitsInStock in the Products Table. If the UnitsInStock is less than 15 we'll display the value in red color else green.
Snippet:
Create a webform with a DataGrid control.
<asp:DataGrid id="DataGrid1" AutoGenerateColumns =false style="Z-INDEX: 101; LEFT: 18px; POSITION: absolute; TOP: 18px" runat="server">
<Columns> <asp:TemplateColumn > <HeaderTemplate >
<table border=0 width="100%">
<tr>
<td>ProductID</td>
<td>ProductName</td>
<td>UnitPrice</td>
</tr>
</HeaderTemplate>
<ItemTemplate >
<tr>
<td><%#DataBinder.Eval(Container.DataItem , "ProductID")%></td>
<td><%#DataBinder.Eval(Container.DataItem , "ProductName")%></td>
<td><font Color ="<%#PickColor(DataBinder.Eval(Container.DataItem , "UnitsInStock"))%>"> <%#DataBinder.Eval(Container.DataItem , "UnitsInStock")%>
</font></td>
</tr>
</ItemTemplate>
<FooterTemplate >
</table>
</FooterTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
In the code behind write the code which picks the color based on the value of the UnitsInStock.
Here goes the code:
Private
Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
Dim myconnection As SqlConnection = New SqlConnection("server=localhost;uid=sa;password=; database=northwind")
Dim myda As SqlDataAdapter = New SqlDataAdapter("Select * from Products", myconnection)
Dim ds As DataSet = New DataSet
myda.Fill(ds, "AllTables")
DataGrid1.DataSource = ds
DataGrid1.DataBind()
End Sub
'Function to pick up the color based on th UnitsInStock Value
Function PickColor(ByVal fldval As Double) As String
Dim color As String
If fldval < 15 Then
color = "Red"
Return color
Else
color = "green"
Return "green"
End If
End Function