RowCommand et Firefox

Résolu
cs_Zoizoi Messages postés 29 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 13 juillet 2009 - 9 déc. 2007 à 20:25
cs_Zoizoi Messages postés 29 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 13 juillet 2009 - 12 déc. 2007 à 14:18
Bonjour,

J'ai une GridView avec des ImageButton en display:none.
Je voudrais activer la commande de ces boutons via un menu contextuel.
Ca marche nickel sous IE7.
Sous Firefox, il me fait un postback simple sans passer par mon évènement OnRowCommand.

Avez-vous une idée ?

Merci.

24 réponses

gldfdp Messages postés 90 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 21 février 2008
10 déc. 2007 à 14:20
Essaie de simuler un __dopostback(tonbouton,null).
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
9 déc. 2007 à 20:43
Bonjour,

regarde avec fiddler ou httpwatch les requetes http qui transite et regarde les différences entre les deux. Tu trouveras surement une différence et donc l'explication du problème :)

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
0
cs_Zoizoi Messages postés 29 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 13 juillet 2009
10 déc. 2007 à 12:31
Bonjour,

J'ai regardé dans fiddler, juste avant juqu'à l'affichage de la page après évènement :
- Dans IE7 : je vois passer une trame vers ma page active de 52 octets : pageRedirect||//...
- Dans FireFowx 2.0.0.11 : Je vois un appel complet à ma page (environ 90Ko).

Donc rien d'extraordinaire.
Pour info (rappel):
J'ai des colonnes dans ungridview qui représentent des imagebutton je les mets à display:none dans le RowDataBound en précisant une CommandName.
Depuis IE, j'appelle le click() du bouton (en javascript) qui me déclenche le OnRowCommand de mon GridView : Ok ça marche nickel.
Depuis FireFox, le click() se déclenche, mais fait un postback tout bete sans passé par mon évènement... ;-(

Avec Fiddler que puis-je regarder d'autres ?
Est-ce un bug de FireFox ?
Pour info, J'ai mis EnableEventValidation à false dans ma page.

Merci par avance...
0
gldfdp Messages postés 90 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 21 février 2008
10 déc. 2007 à 12:32
Pour des raisons de sécurité, Firefox ne gère pas la commande click() non plus, il faut donc ruser pour simuler un click sur un bouton asp.

-- Grégoire
0

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

Posez votre question
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
10 déc. 2007 à 12:33
Bonjour,

Montre moi la requete qui entraine des résultats différents entre IE7 et FF.

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
10 déc. 2007 à 12:46
@gldfp : je ne vois pas de quoi tu parles.

Je viens de tester

<

asp:ImageButton
ID="ibTest"
runat="server"
OnClick="ibTest_Click"
ImageUrl="Folder.jpg"
OnCommand="ibTest_Command"
/>et cela fonctionne parfaitement avec FF. Par contre j'ai entendu parlé d'un bug si y'a pas d'image. Et oui y'a un bug qui double le postback avec IE :
J'ai expliqué et résolu le pb ici : http://blogs.developpeur.org/cyril/archive/2006/11/22/double-postback-avec-bouton-image-et-gridview.aspx

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
0
gldfdp Messages postés 90 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 21 février 2008
10 déc. 2007 à 13:28
je parlais de la fonction click() en javascript qui est désactivée sous ie.

-- Grégoire
0
gldfdp Messages postés 90 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 21 février 2008
10 déc. 2007 à 13:29
sous firefox je veux dire

-- Grégoire
0
cs_Zoizoi Messages postés 29 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 13 juillet 2009
10 déc. 2007 à 13:42
Bizarre ce que tu dis, j'ai un ImageButton en display:none dans un GridView.
Dans le RowDataBound, je place un onclick="alert('a');"
Et depuis IE ou FF, j'ai bien mon message qui apparait...
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
10 déc. 2007 à 13:44
Tu peux nous montrer un peu de code ? car là je pige pas ce que tu fais

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
0
cs_Zoizoi Messages postés 29 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 13 juillet 2009
10 déc. 2007 à 13:47
Entête qui fonctionne avec IE :

HTTP/1.1 200 OK
Date: Mon, 10 Dec 2007 11:15:23 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Cache-Control: no-cache
Pragma: no-cache
Expires: -1
Content-Type: text/plain; charset=utf-8
Content-Length: 52

34|pageRedirect||/MonAppli/MaPage.aspx

Entête qui ne fonctionne pas avec FF :

HTTP/1.1 200 OK
Date: Mon, 10 Dec 2007 11:20:00 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 90346

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
Bla bla bla...
Bref, ma page entière (aucune redirection car pas de RowCommand déclenché)
0
gldfdp Messages postés 90 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 21 février 2008
10 déc. 2007 à 13:50
Zoizoi: onclick marchera, mais tonbutton.click() qui simule le fait qu'un utilisateur clique sur ton image ne marchera pas avec ff. Après ca je n'ai peut être aps tout compris à ce que tu voulais faire

-- Grégoire
0
cs_Zoizoi Messages postés 29 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 13 juillet 2009
10 déc. 2007 à 14:10
Voici donc un bout de code bidon, mais qui reprend grosso modo le principe :

Code de MaPage.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MaPage.aspx.cs" Inherits="MaPage"
    EnableEventValidation="false" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
</head>

   
       
        <HeaderStyle CssClass="gvex_Header" />
        <FooterStyle CssClass="gvex_Footer" />
        <RowStyle CssClass="gvex_Row" />
       
       
        <Columns>
           
           
           
           
        </Columns>
       
   
   

</html>

Code behind du RowDataBound (ultra simplifié) :
  protected void grd_Main_RowDataBound(object sender, GridViewRowEventArgs e)
  {
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
      DataRowView RowView = (DataRowView)e.Row.DataItem;
      ds_Items.TB_ItemsRow Row = (ds_Items.TB_ItemsRow)RowView.Row;
      TableCellCollection myCells = e.Row.Cells;
      ImageButton btn_Delete = e.Row.FindControl("btn_Delete") as ImageButton;
      btn_Delete.CommandName = "Delete";
      btn_Delete.CommandArgument = e.Row.RowIndex.ToString();
      btn_DeleteFile.Style.Add(HtmlTextWriterStyle.Display, "none");
    }
  }

Avec IE 7, il passe par le OnRowCommand du GridView.
Avec FF, il fait un simple PostBack.

Suis-je plus clair ?

Merci.
0
cs_Zoizoi Messages postés 29 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 13 juillet 2009
10 déc. 2007 à 14:16
En fait Grégoire, je viens de m'apercevoir que tu avais répondu à mon poblème.
Il s'agit, je pense, en effet du monbouton.click(); qui ne fonctionne pas sous FF.

Du coup, comment je peux faire ?

Merci.
0
gldfdp Messages postés 90 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 21 février 2008
10 déc. 2007 à 14:18
c'est donc bien ce que j'avais dit:


-->tu utilises la fonction click() qui n'est pas supportée par ff voila pourquoi ca ne marche pas
0
cs_Zoizoi Messages postés 29 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 13 juillet 2009
10 déc. 2007 à 14:27
En fait je n'en suis pas si sûr, car en mettant la ligne du display none en commentaire, ca marche dans les 2 navigateurs.
Donc on peut dire que le monbouton.click() sous FF fonctionne, mais par lorsqu'il est invisible.

C'est ça ?
Une autre idée ?

Par avance, merci...
0
cs_Zoizoi Messages postés 29 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 13 juillet 2009
10 déc. 2007 à 15:26
J'ai trouvé un forum qui discute du problème que je rencontre :
http://forums.asp.net/t/987493.aspx

Apparemment, pas trop de solution : j'utilise des ImageButton et non des Button (du coup pas de UseSubmitBehavior).
Encore une fois, je viens de refaire l'essai :
Dans le OnRowDataGrid, je rajoute un attribut display = none et onclick="alert('a');'
Dans IE, j'ai mon message et le OnRowCommand déclenché.
Dans FF, j'ai le mon message, mais toujours pas l'évènement.

~ZoiZoi, N'a plus qu'à pleuré
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
10 déc. 2007 à 21:04
Ca peut se comprendre, meme si c'est pas trop logique de la part de FF, si le bouton est invisible alors on peut pas clicker dessus.

Tu peux essayer d'utiliser style="position:absolute; top:-1000px;left:-1000px;" ..

Mais quel interet de mettre un imagebutton invisible ? Mon controle PostBackControl me semble tout indiqué dans ce genre de cas (enfin ce que j'en ai compris ;))

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
10 déc. 2007 à 21:04
Au fait, ce qui est interessant n'est pas la réponse (puisqu'elle est différente) mais la requête qui a entrainé une réponse différente, c'est ici qu'il y a pleins d'infos interessante :-)

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
0
cs_Zoizoi Messages postés 29 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 13 juillet 2009
11 déc. 2007 à 11:09
Salut,

En effet, c'est un peu ridicule de mettre en place des imagesbuttons et d'exploiter le commandname dans la gridview, sachant qu'ils ne doivent pas être affichés !
Du coup, j'utilise le __doPostBack (comme suggéré par Greg) avec mes arguments EventTarget et EventArgument qui vont bien.
Dans le PageLoad, j'analyse ce que j'ai envoyé et j'appelle le bon traitement.

Vous auriez fait comme ça aussi ?
0
Rejoignez-nous