Problème avec asp:repeater et injection de js
Bonjour tout le monde
Je vous présente tout d'abord ce que je souhaire faire:
J'ai une page web avec une textbox, une image et un tableau.
Dans ma base de données, j'ai une table Couleur avec 2 colonnes
C_NOM
C_VALEUR_WEB
Le tableau de ma page sert à afficher les couleurs stockées dans ma table.
Chaque case est une couleur en fait
Pour ça j'utilise un asp:repeater tout simple
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
<asp:Repeater ID="form_tab_couleurs" runat="server">
<HeaderTemplate>
<table style="width: 21px; background-color:#555555" cellspacing="1">
<tr>
</HeaderTemplate>
<ItemTemplate>
<td style="width: 20px; height: 20px; background-color: #<%#DataBinder.Eval(Container.DataItem, "C_VALEUR_WEB")%>">
<img alt="" src="_fichiers/img/pixel.gif" width="20";/>
</td>
</ItemTemplate>
<FooterTemplate>
</tr>
</table>
</FooterTemplate>
</asp:Repeater> |
Jusque là pas de problème.
Ensuite, je souhaite ajouter un javascript sur le onclick de chaque case de mon tableau. Le script js a pour but de remplir la textbox avec le nom de la couleur et remplir l'image avec la couleur selectionnée.
Le script js en lui même marche bien.
Code:
1 2 3 4 5 6 7 8
|
function select_couleur(couleur_web, couleur_nom) {
obj = document.getElementById(Literal_clientID + '_form_r_couleur');
obj.value=couleur_nom;
obj2 = document.getElementById(Literal_clientID + '_img_couleur');
obj2.style.backgroundColor= '#'+couleur_web;
} |
Le pb se trouve au niveau de l'item Template qui ressemble à ça avec l'insertion du code pour le js:
Code:
1 2 3 4 5 6
|
<ItemTemplate>
<td style="width: 20px; height: 20px; background-color: #<%#DataBinder.Eval(Container.DataItem, "C_VALEUR_WEB")%>">
<img alt="" src="_fichiers/img/pixel.gif" width="20" onclick="select_couleur('<%#DataBinder.Eval(Container.DataItem, "C_VALEUR_WEB")%>', <%#DataBinder.Eval(Container.DataItem, "C_NOM")%>)";/>
</td>
</ItemTemplate> |
Le problème est que les guillemets du onclick="" rentrent en conflit avec les guillemets du DataBinder.Eval :cry:
Qq'un a une idée?
Merci