Linkbutton dynamique & postback [Résolu]

Messages postés
4
Date d'inscription
jeudi 9 décembre 2004
Dernière intervention
3 octobre 2006
- 2 oct. 2006 à 16:29 - Dernière réponse :
Messages postés
165
Date d'inscription
jeudi 3 novembre 2005
Dernière intervention
1 février 2013
- 16 mars 2011 à 13:50
bonjour,

j'ai un petit soucis avec mes linkbutton créés dynamiquement, lors du click , la page se recharge et la méthode que j'ai associée au linkbutton dynamique ne s'effectue pas... alors qu'en testant avec un linkbutton static, tout marche correctement.

Comment peut-on bloquer le postback ou la redirection auto du linkbutton dynamique .

j'explique ce que je veux faire : 
je récupère une image générée dynamiquement  que j'affiche dans ma page, 
un lien sur cette image  permet le téléchargement de l'image (par ma methode qui force le téléchargement de l'image plutot que de l'afficher dans le navigateur)

 un peu de code pour mieux comprendre ?

LinkButton

tmp_lkButton = newLinkButton();
tmp_lkButton.ID ="tmp_lkButton"+ i.ToString ();
tmp_lkButton.CausesValidation = false;
tmp_lkButton.Text = "t‚l‚charger ce graphique";
tmp_lkButton.Enabled = true;
tmp_lkButton.EnableTheming =
true;
tmp_lkButton.EnableViewState = true;
tmp_lkButton.Click += new System.EventHandler(this.tmp_lkButton_Click);
tmp_lkButton.Attributes.Add(tmp_lkButton.ID, "../test_Stats/TMP_IMG/" + mesStat.ColStat[i].Name + typeGraph.ToString() + typ + legende + ".png");
//juste pour récupérer l'url de l'image
Panel2.Controls.Add(tmp_lkButton);
Panel2.EnableViewState = true ;

//voilà pour la création du bouton

protected
void tmp_lkButton_Click(
object sender,
EventArgs e){

// LinkButton a = (LinkButton)sender;

//DownloadFile(a.Attributes[a.ID], true);DownloadFile(

"./images/logo.jpg",
true);

}

si quelqu'un voit une solution, j'ai regardé les post à ce sujet et pas de réponse que je puisse envisager comme solution...

merci
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
6827
Date d'inscription
dimanche 15 décembre 2002
Dernière intervention
13 octobre 2010
2 oct. 2006 à 18:07
3
Merci
Tu as l'evenement Load de la page ou tu met la majorité du code mais tu as pleins d'autres evenement notammeent l'evenement init

protected void Page_Init(Object sender, EventArgs e)
{

 //Ajout du controle ici
this.Controls.Add(lecontrol);

}

<hr />Cyril - MVS - MCP

Merci jesusonline 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de jesusonline
Messages postés
6827
Date d'inscription
dimanche 15 décembre 2002
Dernière intervention
13 octobre 2010
2 oct. 2006 à 16:37
0
Merci
Bonjour,

Tout controle doit être présent dans la collection de controls avant le page_load il faut donc rajouter tous les controles dans le page_init, sinon ils ne vont pas pouvoir déclencher d'evenement.

<hr />Cyril - MVS - MCP
Commenter la réponse de jesusonline
Messages postés
4
Date d'inscription
jeudi 9 décembre 2004
Dernière intervention
3 octobre 2006
2 oct. 2006 à 17:19
0
Merci
merci pour cette réponse rapide


je vais tester ça alors même si je n'ai qu'une vague idée de ce qu'est le page_init...


et merci aussi pour tous tes codes sur les créations en dynamique, même si ils sont en VB ça m'a bien dépanné aujourd'hui


David


 


 
Commenter la réponse de cs_davidoff2
Messages postés
4
Date d'inscription
jeudi 9 décembre 2004
Dernière intervention
3 octobre 2006
2 oct. 2006 à 22:51
0
Merci
oui c'est vrai j'ai fait un tour sur le msdn, ça offre pas mal de possibilités (heureusement quelques réminiscences de java me reviennent) tu m'as aiguillé sur la bonne voie, je vais chercher un peu et je posterai la réponse d'ici peu j'espère
Commenter la réponse de cs_davidoff2
Messages postés
4
Date d'inscription
jeudi 9 décembre 2004
Dernière intervention
3 octobre 2006
3 oct. 2006 à 10:23
0
Merci
voilà une version simplifiée de ce que j'obtiens ( je ne met pas les boucles qui servent à définir combien de bouton avoir et leurs attributs)

pour le init

protected

void Page_Init(Object sender, EventArgs e)

{

//Ajout du controle ici

tmp_lkButton = newLinkButton();

tmp_lkButton.Text = "tmplink";

tmp_lkButton.EnableTheming = true; //si on a besoin de ces options les placer ici, dans le init

tmp_lkButton.EnableViewState = true;//si on a besoin de ces options les placer ici, dans le init

tmp_lkButton .Click+=newEventHandler(tmp_lkButton_Click);

this.Panel2.Controls.Add(this.tmp_lkButton);

}

pour le eventHandler

protectedvoid tmp_lkButton_Click(object sender, EventArgs e)

{

DownloadFile("./images/logo.jpg", true);//m‚thode issue de cs

}

et la methode download

privatevoid DownloadFile(string fname, bool forceDownload)

{

string path = MapPath(fname);

string name = Path.GetFileName(path);

string ext = Path.GetExtension(path);

string type = "";

// set known types based on file extension

if (ext != null)

{

switch (ext.ToLower())

{

case".png": type = "image/png";

break;

case".jpg": type = "image/jpeg";

break;

}

}

if (forceDownload)

{

Response.AppendHeader("content-disposition",

"attachment; filename=" + name);

}

if (type != "")

Response.ContentType = type;

Response.WriteFile(path);

Response.End();

}

en esperant que ça dépannera quelqu'un

encore merci Cyril
Commenter la réponse de cs_davidoff2
Messages postés
165
Date d'inscription
jeudi 3 novembre 2005
Dernière intervention
1 février 2013
16 mars 2011 à 13:50
0
Merci
Et dans le cas ou le déclenchement de l'évenement devait lui apporté une information lui servant à non plus affiché non plus un LinkButton mais un Label (ex: ).

Comme l'initialisation a déjà été faite, comme devrait il s'y prendre pour initialiser son Label ?

Merci d'avance.
Commenter la réponse de EmacLi

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.