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é :


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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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