Changement attribut d'une ligne d'un gridview
Bonjour,
Je cherches une solution pour modifier les attributs backcolor d'une ligne spécifique remplie dynamiquement dans un gridview.
Voici le gridview avec le résultat final souhaité :
http://img377.imageshack.us/img377/1893/gvhh1.jpg
La ligne orange est la ligne survolé par le pointeur via un attribut onmouseover que j'ai défini.
Les lignes rouges et vertes sont colorées à la création du gridview en fonction des 2 dates (jour et peremption) rouge=urgent, vert=a traiter rapidement.
Mon problème est que dès lors que je passe mon pointeur sur les lignes rouges et vertes mes attributs backcolor prennent la valeur de ma fonction qui fait le onmouseover et onmouseout. Je souhaiterais qu'après le survol des lignes rouges elles puissent restées rouge ou verte suivant leur couleurs.
Donc dans l'idéal il faudrait qu'en fonction de chaque ligne survolée je puisse dire : si tes une ligne rouge quand tu sera survolée tu passera en orange pour mettre en évidence la ligne du pointeur et que lorsque qu'elle n'est plus survolée elle puisse revenir à son backcolor normal c'est à dire rouge.
J'ai planché sur une fonction javascript qui compare si ces un ligne normales (pas rouges ni vertes) onmouseout le backcolor="" si c'est une rouge ou vertes onmouseout le backcolor redevient rouge ou vert.
Le problème étant de déclencher cette comparaison pour chaque ligne survolée du gridview, un genre de <tr onmouseover="coloration()" ...></tr>
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
Partie du Code page.aspx
<tr>
<td><asp:Label cssclass="lblnumrows" ID="lblNbCount" runat="server" Text="" ></asp:Label></td></tr>
<tr>
<div class="conteneur_grid">
<cc1:MyGridView cssclass="gridview" ID="GridRecherche" runat="server" EnableCellClick="false" EnableRowClick="true" AllowPaging="true" PageSize="20" AllowSorting="true"
KeepDataSource="true" AutoGenerateColumns="false" MouseOverBackColor="orange" MouseOverFontColor="white" >
</cc1:MyGridView> |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
Partie du Code behind:
Private Function DisplayColumn(ByVal ColumnTitle As String, ByVal ColumnDataBaseName As String, ByRef GridViewtoAdd As GridView) As BoundField
Dim someField As New BoundField()
someField.DataField = ColumnDataBaseName
someField.HeaderText = ColumnTitle
someField.SortExpression = ColumnDataBaseName
GridViewtoAdd.Columns.Add(someField)
Return someField
End Function
Private Function loadData() As DataTable
Dim cnx As New DB.MySqlConnection()
Dim mydatatable As New DataTable
mydatatable = cnx.GetDataTable(requete())
Return mydatatable
End Function
Private Sub LoadGridViewColumns(ByVal GridViewtoAdd As GridView)
If Not GridViewtoAdd.Columns.Count > 1 Then
DisplayColumn("ID", "idechange", GridViewtoAdd)
DisplayColumn("Titre", "titre", GridViewtoAdd)
DisplayColumn("Raison Sociale", "rsoc", GridViewtoAdd)
DisplayColumn("Date Echéance", "date_ech_avenir", GridViewtoAdd)
DisplayColumn("Date Péremption", "date_peremption", GridViewtoAdd)
DisplayColumn("N° ticket", "idticket", GridViewtoAdd)
DisplayColumn("Etat", "Etat", GridViewtoAdd)
DisplayColumn("Priorite", "Priorite", GridViewtoAdd)
End If
End Sub
Private Sub LoadGridViewRech()
LoadGridViewColumns(GridRecherche)
GridRecherche.DataSource = loadData()
GridRecherche.DataBind()
coloration()
End Sub
Private Sub coloration()
Dim datePer As Date
Dim dateJour As Date
For i = 0 To GridRecherche.Rows.Count() - 1
datePer = GridRecherche.Rows(i).Cells(4).Text
dateJour = DateAndTime.Now
If datePer < dateJour Then
GridRecherche.Rows(i).BackColor = Drawing.Color.Red
End If
If dateJour.Year = datePer.Year And dateJour.Month = datePer.Month And ((dateJour.Day - datePer.Day) < 3) Then
GridRecherche.Rows(i).BackColor = Drawing.Color.Green
End If
Next
End Sub |