Un repeater dont les links buttons ne déclenchent pas le OnItemCommand

Signaler
Messages postés
96
Date d'inscription
vendredi 17 décembre 2004
Statut
Membre
Dernière intervention
13 juillet 2007
-
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
-
Bonjour,

Je travaille avec le framework 2.0, mon projet vient juste d'être convertie depuis le 1.1 et j'ai un problème :

Comme indiqué dans le titre, le problème vient d'un repeater dont les linkbuttons ne déclenchent pas l'évenement OnItemCommand.
J'ai constaté que celà provenait surement du fait qu'une fois le code xhtml généré le lien du linkbutton est le suivant :

javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("modifdossier", "", true, "", "", false, true))

et dans le code javascript de la page, je ne trouve pas cette fonction.

Savez vous pourquoi il ne demande pas d'executer la fonction "classique" comme d'ailleurs sur l'autre repeater de la page :

javascript:__doPostBack('_ctl0$Main$RepeaterCoords$_ctl0$modifcoords','')



Merci de votre aide
Ben

8 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Bonsoir,

j'avais deja vu cette fonction la Webform_DoPostBackWithOptions mais j'ai oublié de la dissequé pour bien comprendre :(

Une chose de sur c'est que ca fonctionne chez moi :)

le ItemCommand tu le met bien sur ton repeater ? tu as un postback quand tu cliques sur le linkbutton?


<HR>
Cyril - MVS - MCP ASP
Messages postés
96
Date d'inscription
vendredi 17 décembre 2004
Statut
Membre
Dernière intervention
13 juillet 2007

Bonsoir,
merci de ton aide,

petit à petit, j'ai pu recentré le problème, finalement, c'est pas la fonction javascript qui pose problème, j'en ai trouvé une qui marche, c'est bien un problème du repeater.
En plus, le postBack s'effectue par contre rien ne s'execute dans l'évènement.
Le problème semble venir du fait que je ne veut pas de viewstate pour ce repeater, j'ai donc mis pour celà EnableViewState="False".
Celà marchait bien en 1.1, et là plus rien... je ne comprends pas pourquoi il ne veut pas executer cette méthode sans postback... :(

J'ai encore fais une connerie grosse comme le monde où ya eu un changement dont je n'ai pas été informé ? :p

Merci encore
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Tu peux montrer le code que tu utilises ou alors simplifier ton truc et voir ce que t'essaies de faire :) car la je suis perdu :p


<HR>
Cyril - MVS - MCP ASP
Messages postés
96
Date d'inscription
vendredi 17 décembre 2004
Statut
Membre
Dernière intervention
13 juillet 2007

Bonjour,

je me suis recréé une page et ca semble confirmer le fait que je n'arrive pas à faire executer le onItemCommand lors que je met le viewstate à false pour un repeater.

Voici le code :

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="test2.aspx.cs" Inherits="Dossiers_test2" Title="Untitled Page" %>





'>




<SelectParameters>

</SelectParameters>


//plus les using

public partial class Dossiers_test2 : System.Web.UI.Page
{
protected void onItemCommand(object source, RepeaterCommandEventArgs e)
{
label1.Text = "On passe bien dans le onItemCommand";
}
}

Ici pas de problèmes

Par contre, dès que j'ajoute EnableViewState="false" à mon repeater, rien ne s'affiche...

Depuis le début de ce message, j'ai avancé : j'ai essayé de mettre un Repeater1.DataBind() dans le pageLoad, et là ca marche ! Ca se comprend, si je ne le reconstruit pas dans le pageLoad, il n'existe pas, donc c'est surement pour celà que ca ne rentre pas dans l'event...
J'ai plus qu'à regardé si ca colle avec ma vrai page.

Merci de ton aide et surtout de ton soutien ! :p
Messages postés
96
Date d'inscription
vendredi 17 décembre 2004
Statut
Membre
Dernière intervention
13 juillet 2007

Euh... en fait, mon explication me semble bizarre... quand je ne met pas le databind() dans le Page_Load, le repeater est quand même là, alors qu'il n'y a pas de postback...
en mettant un onItemCreated, je m'apercois qu'il est recréé (d'ailleurs je ne vois pas pourquoi...), donc s'il est recréé, pourquoi ne veut il pas executé mon onItemCommand ?
Je m'arrache les cheveux !

Voici le code :

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="test2.aspx.cs" Inherits="Dossiers_test2" Title="Untitled Page" %>





'>




<SelectParameters>

</SelectParameters>


//plus les namespaces

public partial class Dossiers_test2 : System.Web.UI.Page
{
protected void Page_Load(object sender, System.EventArgs e)
{
//Repeater1.DataBind(); //quand je décommente ca marche
}

protected void onItemCommand(object source, RepeaterCommandEventArgs e)
{
label1.Text += "On passe bien dans le onItemCommand
";
}
protected void onItemCreated(object sender, RepeaterItemEventArgs e)
{
label1.Text += "On crée le repeater
";
}
}
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
J'aimerais tester et comprendre le problème mais malheureusement je n'ai pas le temps et un enorme mal de crane :p

mais j'ai mis un drapeau dans outlook donc j'y regarde quand j'ai le tmeps


<HR>
Cyril - MVS - MCP ASP
Messages postés
96
Date d'inscription
vendredi 17 décembre 2004
Statut
Membre
Dernière intervention
13 juillet 2007

Pas de problème, de toute façon je cherche de mon côté également, mais c'est sûr que c'est moins efficace...
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Bon, je viens de regarder

et j'ai rien vu d'anormal :p

si tu desactive le viewstate du bordel alors ton repeater sera vide, tu n'auras donc aucun linkbutton sur lequel effectué le truc.

Aprés si tu veux malgré tout executé ta fonction sans viewstate et sans refaire une requete ca doit etre possible mais je vois pas (encore) le truc :p Une chose de sure c'est que ca ne te raffichera pas tes données ensuite :-)


<HR>
Cyril - MVS - MCP ASP