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 :

Gridview et Sorting


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 236
    Par défaut Gridview et Sorting
    Bonsoir,

    j'ai un problème avec mon gridview, paging et sorting.

    J'ai écrit un code, mais le problème il ne marche pas parfaitement c'est à dire :
    quand je clique sur champ de trie pour la première fois le grid reste le même mais quand je clique une 2 ème fois le grid change selon le trie et puis il fonctionne correctement.
    Mon souci est de corriger le fonctionnement au 1 er clique.

    Voilà mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
     
    //page load
    if (!IsPostBack)
                {
     
     
                    ChargerGrid();
     
                }
     
    private DataTable GetData()
        {
     
     
                #region Requête CAML sur la liste des projets
                SPQuery objSPQuery = new SPQuery();
                objSPQuery.ViewFields =
                     @"
                   <FieldRef Name='ID' />
                   <FieldRef Name='NomProjet' />
                   <FieldRef Name='ChefDeProjet'  />
                   <FieldRef Name='DateDebut'  />
                   <FieldRef Name='DateFinProjet'  />";
     
                objSPQuery.Query =
                    @" <OrderBy>
                      <FieldRef Name='DateDebut' Ascending='False' />
                      </OrderBy>";
     
                objSPListItemCollection = objSPList.GetItems(objSPQuery);
                #endregion
     
     
                #region Affecter la valeur de la requête au grid
                DataTable datatable = objSPListItemCollection.GetDataTable();
                #endregion
     
     
                return datatable;
        }
     
        public void ChargerGrid()
        {
            try
            {
     
     
     
                GVProjet.DataSource = GetData();
                GVProjet.DataBind();
     
     
            }
     
            catch (Exception E)
            {
                LblErreur.Text = E.Message;
            }
     
        }
    private string GridViewSortDirection
        {
     
            get { return ViewState["SortDirection"] as string ?? "ASC"; }
     
            set { ViewState["SortDirection"] = value; }
     
        }
     
     
     
        private string GridViewSortExpression
        {
     
            get { return ViewState["SortExpression"] as string ?? string.Empty; }
     
            set { ViewState["SortExpression"] = value; }
     
        }
     
     
     
        private string GetSortDirection()
        {
     
            switch (GridViewSortDirection)
            {
     
                case "ASC":
     
                    GridViewSortDirection = "DESC";
     
                    break;
     
     
     
                case "DESC":
     
                    GridViewSortDirection = "ASC";
     
                    break;
     
            }
     
     
     
            return GridViewSortDirection;
     
        }
     
     
     
     
        protected DataView SortDataTable(DataTable dataTable, bool isPageIndexChanging)
        {
     
            if (dataTable != null)
            {
     
                DataView dataView = new DataView(dataTable);
     
                if (GridViewSortExpression != string.Empty)
                {
     
                    if (isPageIndexChanging)
                    {
     
                        dataView.Sort = string.Format("{0} {1}", GridViewSortExpression, GridViewSortDirection);
     
                    }
     
                    else
                    {
     
                        dataView.Sort = string.Format("{0} {1}", GridViewSortExpression, GetSortDirection());
     
                    }
     
                }
     
                return dataView;
     
            }
     
            else
            {
     
                return new DataView();
     
            }
     
        }
     
     
     
        protected void GVProjet_Sorting(object sender, GridViewSortEventArgs e)
        {
     
            GridViewSortExpression = e.SortExpression;
     
            int pageIndex = GVProjet.PageIndex;
     
            //DataTable table = (DataTable)Session["datatable"];
     
            GVProjet.DataSource = SortDataTable(GetData() as DataTable, false);
     
            GVProjet.DataBind();
     
            GVProjet.PageIndex = pageIndex;
     
        }

    Finalement, j'espère que vous m'aidez à résoudre mon problème.

    Merci

  2. #2
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    C'est typiquement un probleme de cycle de vie de ta page. Regarde de ce coté là à mon avis.

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 236
    Par défaut
    Je n'ai pas compris votre remarque, vous pouvez m'expliquer de plus.
    Merci

  4. #4
    Membre Expert Avatar de Arthis
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 265
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Italie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 265
    Par défaut
    As tu vérifié que tu passais bien par ton evenement GVProjet_Sorting?

    Si tel est le cas, reussi t'il bien a faire ton sort?

    si tel est encore le cas? se poser la question de pourquoi cela ne s'affiche pas à l'ecran.. peut etre un probleme d'actualisation des données.

    Je te dis tout ça car par experience lorsqu'un truc fonctionne a partir du deuxieme clic c'est qu'il y a un probleme au niveau du cylce de vie de la apge. quand est ce que les elements sont appeles quand est ce qu'ils sont utilisés , ect...

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 236
    Par défaut
    Franchement j'ai vérifié, je n'ai rien trouvé, juste j'ai remarqué une autre chose quand je clique sur le 1 er champ du grid le sorting sa fonctionne, mais quand je clique sur le 2 ème champ le sorting fonctionne dans le 2 ème clique : le 1 er clique charge la page de nouveau et le 2 eme clique fait le sorting.
    Pouvez m'indiquer dans mon code si j'ai des erreurs?
    Merci

Discussions similaires

  1. [Débutant] GridView et sorting
    Par Ceddoc dans le forum ASP.NET
    Réponses: 12
    Dernier message: 22/09/2011, 09h40
  2. sorting /paging /select gridview
    Par redev dans le forum ASP.NET
    Réponses: 1
    Dernier message: 04/03/2008, 17h56
  3. Sorting d'un GridView
    Par Poussy-Puce dans le forum ASP.NET
    Réponses: 1
    Dernier message: 17/10/2007, 10h55
  4. Quel est le sender lors d'un sorting de gridview
    Par FamiDoo dans le forum ASP.NET
    Réponses: 4
    Dernier message: 28/08/2007, 20h41
  5. [C#][2.0]Sort dans un GridView
    Par Troopers dans le forum ASP.NET
    Réponses: 4
    Dernier message: 24/04/2007, 19h42

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