[.NET 2.0] Récupérer la couleur d'un control côté serveur

Récupérer la couleur d'un control côté serveur [.NET 2.0] - C#/.NET managed - Programmation

Marsh Posté le 04-02-2007 à 15:16:04    

Bonjour :)
 
J'ai un <td> qui se colore en rouge quand je click dessus. Et du côté serveur, je voudrais récupérer la couleur. Je n'arrive pas à le faire.  
Mon code aspx :  

Code :
  1. <table>
  2.   <tr>
  3.     <td id="cell1" onclick="this.style.backgroundColor = '#ff0000'" runat="server">TOTO</td>
  4.   </tr>
  5. </table>
  6. <asp:Button ID="bt1" Text="Go" OnClick="bt1_Click" runat="server" />


Mon code asp.cs :  

Code :
  1. protected void bt1_Click(object sender, EventArgs e)
  2. {
  3.   string color = cell1.bgColor; // toujours vide...
  4. }


Je suis conscient que la couleur qui devient rouge ne s'écrit pas dans la page HTML donc quand elle est renvoyée au serveur, ce dernier ne peut pas connaître la couleur. Mais alors... comment faire ?
Merci beaucoup de votre aide :)

Reply

Marsh Posté le 04-02-2007 à 15:16:04   

Reply

Marsh Posté le 05-02-2007 à 13:42:00    

Tu peux ajouter un  
 

Code :
  1. <input type="hidden" id="hid" runat="server">


 
et en javascript, soit sur le clic sur ta cellule soit sur le clic sur ton bouton, affecter la value de cet input.
 
Tu pourras ensuite la récupérer dans ton code-behind.
 
Exemple :
 

Code :
  1. // Dans ton Page_Load
  2.   if (!IsPostBack)
  3.    bt1.Attributes.Add("onclick", "document.getElementById('hid').value=(document.getElementById('cell1').style.backgroundColor)" );
  4. // Dans l'évènement Click serveur
  5.  private void bt1_Click(object sender, System.EventArgs e)
  6.  {
  7.   string test = hid.Value;
  8.  }


 
en gardant ton td runat="server". Si le style background-color n'est pas setté, tu auras une chaine vide.
 
Cet exemple fonctionne en 1.1, j'ignore s'il y a plus propre où s'il y a une feinte en 2.0 :)


Message édité par pikti le 05-02-2007 à 14:39:07
Reply

Marsh Posté le 05-02-2007 à 15:08:03    

Coucou
 
Ah oui c'est pas bête ça comme solution :)
J'étais entrain d'essayer qqch d'un peu plus compliqué, et si je n'y arrive pas, j'opterai pour ta solution.  
Merci bien :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed