Linkbutton dynamique & postback

Résolu
cs_davidoff2 Messages postés 4 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 3 octobre 2006 - 2 oct. 2006 à 16:29
EmacLi Messages postés 165 Date d'inscription jeudi 3 novembre 2005 Statut Membre 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

6 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
2 oct. 2006 à 18:07
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
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
2 oct. 2006 à 16:37
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
0
cs_davidoff2 Messages postés 4 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 3 octobre 2006
2 oct. 2006 à 17:19
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


 


 
0
cs_davidoff2 Messages postés 4 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 3 octobre 2006
2 oct. 2006 à 22:51
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_davidoff2 Messages postés 4 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 3 octobre 2006
3 oct. 2006 à 10:23
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
0
EmacLi Messages postés 165 Date d'inscription jeudi 3 novembre 2005 Statut Membre Dernière intervention 1 février 2013 1
16 mars 2011 à 13:50
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.
0
Rejoignez-nous