Executer OnClientClick et OnClick sur un même LinkButton ? [Résolu]

lassaad83 148 Messages postés vendredi 28 avril 2006Date d'inscription 1 décembre 2009 Dernière intervention - 27 juin 2008 à 11:09 - Dernière réponse : lassaad83 148 Messages postés vendredi 28 avril 2006Date d'inscription 1 décembre 2009 Dernière intervention
- 27 juin 2008 à 11:41
Bonjour

à tous, alors voila mon souci.
J'ai une page HTML qui contient 3 frames chaque frame contient une page aspx.

Dans une de mes pages aspx j'ai un GridView qui m'affiche certaine infos. Parmis ces infos j'ai un Link bouton qui lorsque je click dessus me permet



d'executer du code behind C# pour charger un second GridView dans la même frame et par la même occasion



d'affecter une URL à ma 2eme frame via une fonction javascript.

Ma fonction javascript :

// Normalement elle



doit prendre



dynamiquement en argument l'ID du LinkButton
// lorsque je click dessus sur ce derniers.
function affecterURL(ltext)
{





      window.parent.frames(2).location.href= 'InfoLotFacturation.aspx?NLot='+ltext+'';



}

Dans l'itemTemplate de mon GridView voila les propriétés ce qu'il y a dans mon LinkButton
'
                            CommandArgument='<%# (DataBinder.Eval(Container.DataItem, "NLot")).ToString().Trim() %>'
                            CommandName="chargerLot"
                            title='<%# (DataBinder.Eval(Container.DataItem, "NLot")).ToString().Trim() %>'
                            OnClientClick="tranRight(' ID DE MON LINKBUTTON ');"  >

Et dans mon code C# pas grand chose puisque je vais juste charger un second GridView en interceptant le commandName, pas la peine de s'attarder la dessus car mon probleme ce situe au niveau de OnClientClick.

Comment pourais-je concatener dans mon code aspx ma fonction javascript et l'ID de mon LinkButton.

Voila ce que j'ai essayer de faire :

1) j'ai enlever le OnclickClient de ma page aspx pour faire au niveau de mon code C# une méthode qui ajoute l'attribut OnClientClick a mon Link en la concatenant ma fonction javascript avec l'ID du LinkButton comme tel :

linkButton.Attributes.Add("OnClientClick", "tranRight('" + linkButton.Text.Trim() + "');");
Résultat : ma fontion javascript n'ai pas exécuter !

2) J'ai bidouiller au niveau de ma page aspx pour pouvoir concatener ma fonction JS et l'ID au niveau de l'attribut OnClienClick :

 - OnClientClick ="tranRight('<% DataBinder.Eval(Container.DataItem, "NLot") %>');"
 - OnClientClick= '<%# string.Concat("tranRight('", Eval("NLot"),");" )%>'
 - OnClientClick='<%# String.Concat("tranRight(""", Eval("NLot"), """);") %>'

A chaque fois j'ai une erreur lors de l'éxécution : La balise serveur n'est pas correcte. ou bienLes balises serveur ne peuvent pas contenir des constructions <% ... %>.

3) Le pire c'est que si je met en dûr un ID comme paramettre de ma fonction JS comme ça :

OnClientClick ="tranRight('ID0001');"

Et bien ça marche !!!!!! ma fonction JS + C# sont exécuter : ma 2eme frame est actualiser et mon 2eme grid est a son tour lui aussi charger ....

4) En dernier recours, j'ai fait un response.Write de ma fonction JS lors de l'execution de mon codeBehind: ça marche mais lorsque le JS est injecter et bien ça me foux en l'air mon design dans ma page aspx ... !!!

Voila, je pense avoir donner le max de detail, j'espere que l'un d'entre vous aura une petite idée ...
Afficher la suite 

2 réponses

Répondre au sujet
lassaad83 148 Messages postés vendredi 28 avril 2006Date d'inscription 1 décembre 2009 Dernière intervention - 27 juin 2008 à 11:41
+3
Utile
Je viens de trouver une solution !!!

En fait dans ma fonction javascript je ne passe plus en paramétre la valeur que je reccupere de mon Bind

mais j'envoi l'ID du LinkButton qui appel la fonction JS et tout le travail se situe desormais au niveau de ma fonction JavaScript


,
il ne me reste plus qu'a recuperer le text afficher dans mon LinkButton
pour le passer en parametre.

Voila plus en detail :

function tranRight(ltext)
{
    var s = document.getElementById(ltext).title;
    window.parent.frames(2).location.href='InfoLotFacturation.aspx?NLot='+ s +'';
}

et dans le LinkButton :



<
asp:LinkButtonid="lienLot" runat="server" 
                            text='<%# (DataBinder.Eval(Container.DataItem, "NLot")).ToString().Trim() %>'
                            CommandArgument='<%# (DataBinder.Eval(Container.DataItem, "NLot")).ToString().Trim() %>'
                            CommandName="chargerLot"
                            title='<%# (DataBinder.Eval(Container.DataItem, "NLot")).ToString().Trim() %>'
                            OnClientClick="javascript:tranRight(this.id);"  >







C# et JavaScript s'exécute impec !!!
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de lassaad83
lassaad83 148 Messages postés vendredi 28 avril 2006Date d'inscription 1 décembre 2009 Dernière intervention - 27 juin 2008 à 11:14
0
Utile
PS :Ma fonction Javacript s'appel tranRight(ltext) et non affecterURL(
ltext
)

au niveau du OnclientClick de mon LinkButton : petite erreur de ma part



...
Commenter la réponse de lassaad83

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.