Hej, Kan du inte om du kör med template columns sätta det som en funktion med hjälp av något värde. Typ; tack för svaret , men jag kör inte med tempate columns... Det går alldeles utmärkt att göra detta genom att implementera en eventhandler för ItemDataBound och sen är det bara att kolla värdena och måla lite fäger på gridden: Man tackar och bugar, det fungerar klockrent...Hur byter man färg på olika fält i en datagrid ?
Jag har en datagrid (System.Web.UI.WebControls.DataGrid) på en asp dot net sida,
mitt problem är att jag skulle vilja byta färg på vissa celler i en column beroende på deras värde.
tex så kan jag har olika värden som,
3,0
3,9
4,2
2,9
osv...
och om dessa värden överstiger te.x 3,7 så vill jag har en grön färg annars röd.
Jag är rätt så grön på dot net, men det som jag har provat med är att försöka skapa en ny klass som har de önskade egenskaperna.
Men det lyckades inte för att jag fick problem med att ärva in från system.windows.forms ( som jag antar inte går i asp.net ).
svar motages tacksamt
//MooosieSv: Hur byter man färg på olika fält i en datagrid ?
<code>
ItemTemplate>
<asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.as") %>' BackColor ='<%# funktion som returnerar värdet%>'>
</asp:Label>
</ItemTemplate>
</code>
eller tänker jag fel?Sv: Hur byter man färg på olika fält i en datagrid ?
utan jag binder SqlDataReader mot gridden.
( tror jag :) )
<code>
<ASP:DATAGRID id="dg1" runat="server" Font-Size="8pt" AutoGenerateColumns="False" BorderStyle="Dotted" Width="347px"BackColor="LightGoldenrodYellow" BorderColor="Black" CellPadding="3" Font-Name="Verdana" HeaderStyle-BackColor="#aaaadd" Font-Names="Verdana">
<HeaderStyle BackColor="Tan"></HeaderStyle>
<Columns>
<asp:BoundColumn DataField="desc_text"HeaderText="Test1">
</asp:BoundColumn>
<asp:BoundColumn DataField="fair_desc" HeaderText="Test2">'
</asp:BoundColumn>
<asp:BoundColumn DataField="a_value" HeaderText="Test3">
</asp:BoundColumn>
<asp:BoundColumn DataField="a_goal" HeaderText="Test4">
</asp:BoundColumn>
<asp:BoundColumn DataField="kategori_id" HeaderText="Test5">
</asp:BoundColumn>
</Columns>
</ASP:DATAGRID>
</code>
samt koden för själva bindningen...
<code>
Dim sSQL As String
sSQL ="SELECT bla bla")
Dim conn1 = New SqlConnection("server=XXX;persist security info=False;Trusted_Connection=yes;database=DB1;packet size=4096")
Dim com1 As SqlCommand = New SqlCommand(sSQL, conn1)
conn1.Open()
dr1 = com1.ExecuteReader()
dg1.DataSource = dr1
dg1.DataBind()
conn1.Close()
dr1.Close()
</code>
Jag hoppas att detta klarnar upp bilden något...
//MooosieSv: Hur byter man färg på olika fält i en datagrid ?
<code>
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="gridcol.aspx.vb" Inherits="pubslab.gridcol"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>gridcol</title>
<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<asp:DataGrid id="grdMain" runat="server"></asp:DataGrid>
</form>
</body>
</HTML>
</code>
<code>
Option Explicit On
Option Strict On
Imports System
Imports System.Data.SqlClient
Imports System.Diagnostics
Public Class gridcol
Inherits System.Web.UI.Page
Protected WithEvents grdMain As System.Web.UI.WebControls.DataGrid
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub
#End Region
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
If Not IsPostBack Then
Dim da As SqlDataAdapter = New SqlDataAdapter("SELECT title,price FROM titles", "server=.;database=pubs;trusted_connection=true")
Dim ds As New DataSet()
da.Fill(ds, "titles")
grdMain.DataSource = ds.Tables("titles").DefaultView
Page.DataBind()
End If
End Sub
Private Sub grdMain_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles grdMain.ItemDataBound
Try
Dim val As Single = Single.Parse(e.Item.Cells(1).Text())
Select Case val
Case Is > 20
e.Item.Cells(1).BackColor = Color.Red
Case Is < 10
e.Item.Cells(1).BackColor = Color.Green
End Select
Catch ex As Exception
End Try
End Sub
End Class
</code>
/MickeSv: Hur byter man färg på olika fält i en datagrid ?