IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Navigation dans formview


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 129
    Par défaut Navigation dans formview
    Bonjour à tous,

    Je débute depuis peu en asp.net et là je suis bloqué sur un truc dans le formview.

    J'ai mis en place un formulaire dans un formview auquel je lie une base de données Access par code. Donc, je ne passe pas directement en insérant un contrôle SQLDataSource. J'ai réussi à me connecter à ma base. J'ai donc mis le code suivant en script dans ma page aspx :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void Page_Load(Object sender, EventArgs e)
    {
    string sConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\EntenteService.mdb";
    string sSQL = "SELECT No_entente,Nom_cours,RefMetier FROM tblEntente";
    SqlDataSource conn = newSqlDataSource("System.Data.OleDb",sConn, sSQL);
    FormView1.DataSource = conn;
    FormView1.DataBind(); 
    }
    Par la suite, dans le template de ma formview, j'ai ajouté un contrôle LinkButton dans le PagerTemplate pour lequel j'ai défini le CommandArgument = "Next" et le CommandName = "Page". Après quelques tests infructueux où le code d'erreur "Le FormView 'FormView1' a déclenché un événement PageIndexChanging qui n'était pas géré.", j'ai compris que je devais ajouter une fonction pour gérer cet événement. Le code inséré dans cette fonction est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void FormView1_PageIndexChanging(Object sender, EventArgs e)
    {
    FormView1.PageIndex = FormView1.PageIndex + 1;
    }
    Je peux donc naviguer par en avant dans mes enregistrements.

    Mon problème est le suivant : si j'ajoute un linkbutton à mon pager pour revenir en arrière dans mes enregistrements (Previous), je ne sais pas comment lui indiquer quel linkbutton a été cliqué. J'ai essayé via la fonction PageIndexChanging en la changeant ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void FormView1_PageIndexChanging(Object sender, FormViewCommandEventArgs e)
    {
    if (e.CommandArgument == "Next")
    FormView1.PageIndex = FormView1.PageIndex + 1;
    }
    
    Cependant, j'obtiens toujours cette erreur de compilation : "Error 2 Aucune surcharge pour 'FormView1_PageIndexChanging' ne correspond au délégué" et je ne sais pas du tout comment contourner ce problème.

    Quelqu'un peut m'aider à élucider ce mystère ?

    Merci à l'avance.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    L'évènement PageIndexChanging prend un paramètre FormViewPageEventArgs et non FormViewCommandEventArgs. A part ça, ça semble correct.

    Mais tu devrais te renseigner sur les délégués pour comprendre le message du compilateur... et aussi apprendre à utiliser la doc

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 129
    Par défaut
    Salut tomlev,

    Merci pour la réponse.

    Citation Envoyé par tomlev
    Mais tu devrais te renseigner sur les délégués pour comprendre le message du compilateur... et aussi apprendre à utiliser la doc
    T'inquiète, j'ai épluché la doc du site ainsi que la doc de Ms web developper et je n'ai malheureusement pas tout pigé. D'ailleurs, je ne saisi pas trop ce concept de délégué. Serait-ce grâce au délégué que je pourrais déterminer si l'utilisateur a cliqué sur revenir en arrière ou revenir en avant dans les enregistrements ?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par MSDN
    Un délégué est un type qui référence une méthode. Une fois qu'une méthode est assignée à un délégué, ce dernier se comporte exactement comme cette méthode.
    Si tu as fais un peu de C ou de C++, tu connais peut-être le concept de "pointeur de fonction". Le delegate est l'équivalent .NET de ce concept, mais offre des possibilités en plus.
    En gros, quand tu déclares un évènement, tu définis le delegate qui décrit les méthodes qui peuvent gérer cet évènement.
    Par exemple, l'évènement Click dans Windows Forms:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public event EventHandler Click;
    Si tu regardes la définition de EventHandler, tu vois ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public delegate void EventHandler(object sender, EventArgs e);
    Donc cet évènement est géré par des méthodes qui ne renvoient rien (void), et prennent en paramètre un object et un EventArgs.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 129
    Par défaut
    Salut tomlev,

    OK, je ne suis pas sûr de tout comprendre et surtout comment l'appliquer à mon problème.

    Je ne vois pas comment je peux connaître quel bouton a été cliqué dans ma formview en gérant cet événement à l'aide d'un delegate. Dois-je en définir un et où ? Dans mon script de Page_Load ? Je définis quoi ? Est-ce que dans mon tag

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <asp:FormView ID="FormView1" runat="server" Style="z-index: 100; left: 0px; position: absolute;
    top: 0px" Height="500px" Width="850px" AllowPaging="True" OnPageIndexChanging="FormView1_PageIndexChanging">

    je dois mettre ce délégué dans le OnPageIndexChanging ? Dois-je ajouter quelque chose dans mon tag représentant le bouton en question ? Je veux juste être en msure de savoir si j'avance ou je recule dans mes enregistrements....les délégués vont me permettre de savoir ça ?

    Désolé, je ne comprends pas trop ce concept de délégué et j'ai beau lire la doc msdn à ce sujet, je ne vois pas comment je l'applique à mon problème.

    Merci encore.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Non, tu n'as pas besoin de créer un délégué toi-même, il existe déjà, et de toutes façons en l'occurrence tu n'as pas besoin de t'en préoccuper... j'en parlais simplement pour expliquer le message d'erreur "Error 2 Aucune surcharge pour 'FormView1_PageIndexChanging' ne correspond au délégué"

    Si tu fais un truc comme ça, ça devrait marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void FormView1_PageIndexChanging(Object sender, FormViewPageEventArgs e)
    {
        if (e.CommandArgument == "Next")
            FormView1.PageIndex = FormView1.PageIndex + 1;
        else if (e.CommandArgument == "Previous")
            FormView1.PageIndex = FormView1.PageIndex - 1;
    }
    EDIT:
    En fait, en regardant la doc, je vois que tu n'as rien à coder pour changer de page... c'est automatique. L'évènement PageIndexChanging te permet juste d'intercepter le changement de page, pour éventuellement l'empêcher.
    Avec le code ci-dessus, ça te ferait avancer/reculer de 2 pages à la fois à mon avis

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 129
    Par défaut
    Salut tomlev,

    Ok je comprends. Effectivement, j'avance de 2 pages si je mets ce code en place.

    Il est vrai que lorsqu'on utilise le contrôle SQLDataSource directement en l'insérant dans la page en mode design, le changement de page est automatique.

    Cependant, si je ne le code plutôt que de l'insérer en mode design, même si je défini bien CommandArgument et CommandName du contrôle, le changement de page ne se fait pas automatiquement.

    Donc, j'en suis au problème que tu as soulevé, j'avance de 2 pages à la fois et je ne sais pas trop comment faire autrement.

    En passant, ton code, tel que présenté, ne fonctionne pas directement puisque le FormViewPageEventArgs n'a pas les propriétés CommandArgument. Il a fallu que je le fasse de façon détourné en passant par l'événement OnItemCommand. Bon, mon problème demeure tout de même : j'avance de 2 pages à la fois.

    Mystère....

    Merci à l'avance de ton aide.

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Effectivement il n'y a pas de CommandName et CommandArguments dans le FormViewPageEventArgs... je m'emmêle les pinceaux moi aussi

    Cependant, si je ne le code plutôt que de l'insérer en mode design, même si je défini bien CommandArgument et CommandName du contrôle, le changement de page ne se fait pas automatiquement.
    Alors ça c'est bizarre... mais à vrai dire je n'ai jamais utilisé de FormView, donc je sais pas trop comment c'est supposé marcher...

Discussions similaires

  1. [Swishmax] Navigation dans mon animation
    Par denis finch dans le forum EDI/Outils
    Réponses: 5
    Dernier message: 22/11/2005, 15h51
  2. Navigation dans un tableau avec Word
    Par Sinclar dans le forum Access
    Réponses: 1
    Dernier message: 12/09/2005, 19h12
  3. Association navigables dans les deux sens
    Par DarkNagash dans le forum Diagrammes de Classes
    Réponses: 4
    Dernier message: 13/07/2005, 15h11
  4. Navigation dans les objets
    Par hunter dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 02/05/2005, 11h31
  5. navigation dans une jsp avec javascript
    Par petitelulu dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/11/2004, 18h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo