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 :

Tri gridView avec callBack


Sujet :

ASP.NET

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 281
    Points : 209
    Points
    209
    Par défaut Tri gridView avec callBack
    Bonjour,

    après avoir lu plein de choses sur le net, je n'arrive toujours pas à faire un tri sur mon gridView.

    Côté aspx, voici ce que j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <asp:GridView ID="gvwResults" AllowSorting="true" runat="server" PageSize="5" BorderStyle=solid BorderWidth=1px BorderColor=black Width="515px" style="" GridLines="Both" ShowHeader="true">
     <RowStyle HorizontalAlign=left />
     <HeaderStyle Font-Bold=true Font-Underline=false ForeColor=black BackColor=lightgray />
     <AlternatingRowStyle BackColor=lightGray HorizontalAlign=left  />
    </asp:GridView>
    en gros, c'est un gridView avec allowSorting = true

    Du coup, cela me donne mon gridView qui se remplie et les en-tetes de colonnes deviennent des liens dont la valeur est par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javascript:__doPostBack('Resultats1$fplResultatRequete$gvwResults','Sort$SURFACE')
    Jusque là on aurait l'impression que ca marche, mais quand je clic sur le lien, cela me recharge toute la page (ce que je ne veux pas), et la seule chose que je vois c'est plein d'éléments d'autres formulaires dans tout les sens mais pas de trace de mon gridView (en gros, ca recharge et c'est le bordel).

    Du coup, j'essaie de mettre "EnabledSortingAndPagingCallBacks = true", mais là je n'ai plus rien qui s'affiche dans mon gridView.


    Voici ce que je fais côté vb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     gvwResults.DataSource = objDataTable
     gvwResults.PageIndex = intCurrentPage
     GenerateBoundColumns() 'creation colonne avec bouton et case à cocher
     GenerateAttrColumns(objDataTable) 'creation colonne avec valeur
     gvwResults.DataBind()
     gvwResults.FooterRow.Visible = True
    Que dois-je faire pour pouvoir trier mon gridView selon une colonne en ne rechargeant que mon gridView (via ajax) ?
    S'il n'y a pas de solution, il n'y a pas de problème.
    Moi je dis ça, je dis rien.

  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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par sunvialley Voir le message
    Que dois-je faire pour pouvoir trier mon gridView selon une colonne en ne rechargeant que mon gridView (via ajax) ?
    via AJAX, en effet...
    Microsoft a publié un Toolkit AJAX pour ASP.NET, téléchargeable sur leur site (et sans doute déjà présent dans les versions récentes de VS...)

  3. #3
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Il me semble que tu ne peux pas utiliser EnabledSortingAndPagingCallBacks = true dans un UpdatePanel. A vérifier

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 281
    Points : 209
    Points
    209
    Par défaut
    Merci pour ces réponses.

    J'avais essayé également dans un UpdatePanel (et ContentTemplate) mais le problème est le même.

    Si j'utilise la propriété EnabledSortingAndPagingCallBacks, alors je n'ai aucun résultat sans même demander un tri (avec ou sans UpdatePanel).

    Ce que j'arrive à faire pour le moment, mais qui est loin d'être le résultat voulu, c'est de recharger d'autre valeur contenu dans le dataSet, mais sans que ce soit les données que je veuille, comme s'il prenait les première qu'il trouve.
    Cela fonctionne de cette façon quand j'utilise un updatePanel sans EnabledSortingAndPagingCallBacks.

    Concernant les Control Toolkit, cela correspondrait à quel outil ?

    Je suis toujours autant perdu...
    S'il n'y a pas de solution, il n'y a pas de problème.
    Moi je dis ça, je dis rien.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 281
    Points : 209
    Points
    209
    Par défaut
    Pour info, le dataSet que j'utilise à l'origine est composé de plusieurs tables. En fonction de différent évènement j'affecte pour le gridView.dataSource une de ces tables. Ensuite je contruis les différentes colonnes en ajoutant 2 colonnes spéciales (checkBox et bouton action) qui correspondent à des actions mais pas à des valeurs contenu dans le dataSet.

    Quand j'utilise l'UpdatePanel et que je clic sur le lien pour trier, cela me "supprime" mes 2 premières colonnes et j'ai l'impression que cela me change mon dataSource pour utiliser la première table dans mon dataSet (et non la dataSource en cours...)

    J'espère que ce n'est pas trop confus.

    Je pense qu'il faut que je force pendant le callBack à appeler la fonction qui créé mon gridView.... mais comment ?
    S'il n'y a pas de solution, il n'y a pas de problème.
    Moi je dis ça, je dis rien.

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 281
    Points : 209
    Points
    209
    Par défaut
    En fait je viens de comprendre ce comportement bizarre.
    J'ai repris des bouts de code et dans celui ci il y avait une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Public Sub SortGridView(ByVal sender As Object, ByVal e As GridViewSortEventArgs) Handles gvwResults.Sorting
    Du coup, cela me changeait mon gridview (mais sans prendre en compte toutes les colonnes et tout le reste).

    Comme je le disais, cela marche bien pour le premier tri, mais ensuite cela me génère une exception "PageRequestManagerParserErrorException" qui me plante mon application.

    Je n'arrive pas à éléminer ce problème (je ne peux pas tout modifier ce qui existe...) ou en tout cas je ne sais pas comment le faire sans qu'il y ai trop d'impact.

    Je suis en train de cherche une autre solution pour refaire la gestion du tri de façon manuelle (en passant par des postBack client), mais j'ai du mal à créer des liens pour activer mes fonctions Javascript.
    En fait, j'ai ma fonction qui ajoute des "BoundField" à mon gridView et je voulais faire qqchose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objBoundField.HeaderText = "<a href:javascript(.....)>plop</a>"
    Le problème est que si je laisse "allowSorting = true", alors le lien est crée automatiquement, et sinon, au moment ou je créé mon gridView (via une serialisation HtmlTextWriter) mon lien n'est pas créé...

    Comment puis-je créer un lien pour mon en tête ?
    S'il n'y a pas de solution, il n'y a pas de problème.
    Moi je dis ça, je dis rien.

Discussions similaires

  1. GridView avec pagination et tri
    Par dany13 dans le forum VB.NET
    Réponses: 2
    Dernier message: 17/03/2010, 08h27
  2. Créer d'un GridView avec possibilité de tri
    Par peregna2007 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 16/07/2008, 10h22
  3. Réponses: 4
    Dernier message: 14/12/2007, 09h57
  4. [ASP.NET 2.0][C#] Tri sur un GridView avec actions
    Par Wishmaster dans le forum ASP.NET
    Réponses: 3
    Dernier message: 13/09/2007, 14h44
  5. Tri gridview avec Template
    Par Prodige2020 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 17/08/2007, 11h15

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