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
Partager