Asp.net + javascript + window.open !

cs_jimmy69 Messages postés 778 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 27 novembre 2008 - 25 mai 2006 à 18:35
gyzmo222 Messages postés 66 Date d'inscription lundi 27 juin 2005 Statut Membre Dernière intervention 2 juin 2006 - 25 mai 2006 à 22:54
Bonjour a tous,

Je debute sous asp.net => c# v1.1 avec vs2003 et je liste ma table dans un datagrid tout simplement !

J'ai place une colonne de type de lien hypertext ds laquelle j'ai place ce code :

ds chaine de format url j'ai place ceci :

javascript:VoirNews('{0}');

j'ai place mon champ id dans le champ url !

ensuite dans le head de ma page j'ai place ce code javascript :

Bon qd je lance l'application et que je fais un survol sur une de mes colonnes liens, je vois bien les liens qui sont correctement formates avec le bon id incremente mais si je clique sur le lien !

il ne fait pas la fonction javascript il me dit :

Erreur d'exécution Microsoft JScript: Objet attendu

Si quelqu'un avait une idée merci !

je souhaite donc cliquer sur le lien d'une colonne d'un datagrid et declenche une fonction javascript qui se chargera de lancer une page de details !

Bon week end ..
Christophe

1 réponse

gyzmo222 Messages postés 66 Date d'inscription lundi 27 juin 2005 Statut Membre Dernière intervention 2 juin 2006 1
25 mai 2006 à 22:54
Salut, je ne pourrais malheureusement pas te répondre préciséement mais un aperçu de 2 méthodes possibles en c# 2.0. A voir si dans le 1.1 c'est réalisable dans les grandes lignes. Je vois une solution par l'ouverture d'une page et passage dans l'url d'un paramètre te permettant d'afficher les détails sur le produit que tu souhaite (type numéro du produit) et voici ce que j'ai déja fait:

Ajout d'un lien dans la huitième colonne (indice 7) du datagrid
foreach (GridViewRow r in GridView1.Rows)
            {
if (r.Cells[7].Text == "Available")
                {
                    LinkButton z = new LinkButton();
                    z.Click += new System.EventHandler(z_Click);
                    z.ID = r.Cells[1].Text;
                    z.Text = "voir détails";
                    z.ForeColor = System.Drawing.Color.Blue;
                    r.Cells[7].Controls.Add(z);
                    r.Cells[7].HorizontalAlign = HorizontalAlign.Center;
                }
}

--> et définition de la fonction z_click assignée comme évènement au click
public void z_Click(object sender, EventArgs e)
    {
        Response.Write(@"<script>window.open('../details.aspx?id=" + ((LinkButton)sender).ID.ToString() + "', target='_blank', 'SAMPLE','width=480, height=320, toolbar=no,status=no,directories=no,menubar=no,location=no,scrollbars=no,resizable=yes');</script>");
    }

Meme si cette méthode n'est pas la plus propre et peut poser des problèmes avec une mise en page par CSS. Il est plus propre de procéder comme suit (cependant, tu passeras moins facilement ton paramètre...):
Dans ta source aspx.cs:
toncontrol.Attributes.Add("onclick", "infos();");
--> ou toncontrol est le control sur lequel tu fixe le click

dans le head de ta page aspx:
<script type="text/javascript">function infos(){window.open('./details.aspx', 'INFORMATIONS','width=480, height=200,toolbar=no,status=no,directories=no,menubar=no,location=no,scrollbars=no,resizable=no');}</script>
--> ou detail.aspx est ta page à ouvrir
0
Rejoignez-nous