Attention car l'attribut OnClick permet d'accéder au code behind côté serveur, contrairement à l'attribut OnClientClick qui permet d'accéder au code Javascript côté client.
De plus dans l'attribut OnClick il ne faut pas mettre de parenthèses.
Pour le problème avec votre script, il faut savoir qu'un contrôle possède 2 identifiants :
- l'identifiant que vous lui donnez via l'attribut ID (par ex. ID="btnSave")
- l'identifiant côté client, qui est créé lors de la génération de la page (c'est le ClientID) (vous verrez par ex. ID="ctl00_toto_btnSave" dans votre code HTML)
Pour pouvoir appeler un contrôle dans du code Javascript il faut donc utiliser le ClientID. Pour cela, plusieurs solutions :
- Soit vous utilisez le .NET Framework 4.0 et vous pouvez définir le mode d'attribution du ClientID dans votre code behind (vous pouvez utiliser le mode Static (il me semble), qui aura pour effet d'assigner la même valeur au contrôle côté serveur et côté client). Dans ce cas, vous pourrez écrire à la main le ClientID de votre contrôle dans votre code javascript comme vous l'avez fait dans votre dernier post, puisqu'il ne changera jamais.
- Soit vous utilisez les blocs de code, pour obtenir quelque chose qui ressemble à ça :
Code Javascript :
function OnCalendar2Click() { if(<% this.Calendar2_PanelC.ClientID %>.style.display == "none")
...
<% this.Calendar2_PanelC.ClientID %> (C#) ou <% Me.Calendar2_PanelC.ClientID %> (VB) aura pour effet d'aller récupérer le ClientID de votre Calendar Control.
Matt - Consultant .NET