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

benjiiim94 Messages postés 96 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 13 juillet 2007 - 13 févr. 2006 à 18:31
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 15 févr. 2006 à 14:35
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

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
13 févr. 2006 à 23:53
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
0
benjiiim94 Messages postés 96 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 13 juillet 2007
14 févr. 2006 à 01:03
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
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
14 févr. 2006 à 01:20
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
0
benjiiim94 Messages postés 96 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 13 juillet 2007
14 févr. 2006 à 14:48
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
0

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

Posez votre question
benjiiim94 Messages postés 96 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 13 juillet 2007
14 févr. 2006 à 17:33
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
";
}
}
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
14 févr. 2006 à 17:45
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
0
benjiiim94 Messages postés 96 Date d'inscription vendredi 17 décembre 2004 Statut Membre Dernière intervention 13 juillet 2007
14 févr. 2006 à 17:58
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...
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
15 févr. 2006 à 14:35
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
0
Rejoignez-nous