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 Sorting pb


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut Gridview Sorting pb
    Bonjour,

    J'ai une gridview qui se charge bien mais je n'arrive pas à faire le sorting.
    Quand je clique sur la colonne un postback est bien effectué et je ne réaffecte pas le datasource à ma gridview. (Car je bind depuis le code behind).
    La SortExpression est bien la même que mon datafield dans mon BoundField.

    Je comprend pas pourqoui ça ne marche pas car même dans les exemple msdn il me semble que c'est quasi identique à ce que j'ai fait.

    Auriez-vous une piste pour ce problème?

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 274
    Par défaut
    Pourrais-tu poster le code, ça sera plus facile à debugger

  3. #3
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    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
    <asp:GridView ID="REP_LIST" runat="server" BackColor="White" BorderColor="#cc0000" AllowPaging="False" Width="100%" AllowSorting="True" AutoGenerateColumns="false" CellSpacing="2" BorderWidth="1px" CellPadding="2" 
            ForeColor="Black" GridLines="None" OnRowCommand="Grid_click">
            <FooterStyle BackColor="Tan" />
            <HeaderStyle BackColor="#cc0000" Font-Bold="True" ForeColor="White" HorizontalAlign="Center" />
            <AlternatingRowStyle BackColor="#febac3" />
            <Columns>
                <asp:BoundField DataField="customer" HeaderText="Customer" SortExpression="customer" />
                <asp:BoundField DataField="status" HeaderText="Status" SortExpression="status" />
                <asp:BoundField DataField="order_no" HeaderText="Order" SortExpression="order_no" />
                <asp:BoundField DataField="shipment" HeaderText="Shipment" SortExpression="shipment" />
                <asp:BoundField DataField="mode" HeaderText="Mode" SortExpression="mode" />
                <asp:BoundField DataField="from" HeaderText="From" SortExpression="from" />
                <asp:BoundField DataField="to" HeaderText="To" SortExpression="to" />
                <asp:BoundField DataField="service" HeaderText="Service" SortExpression="service" />
                <asp:ButtonField ButtonType="Image" ImageUrl="~/icones/magnifier.png" CommandName="bt_select"  ControlStyle-Width="16px" /> 
            </Columns>
    </asp:GridView>

    Behind
    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
    protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                    {
                                REP_LIST.DataSource = MaSource
                                REP_LIST.DataBind();
                    }
            }
     
     protected void Grid_click(object sender, GridViewCommandEventArgs e)
            {
                if (e.CommandName == "bt_select")
                {
                          // code
                }
            }

  4. #4
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Par défaut
    tu fais un postback donc ta grid ne se raffraichit pas. tu as mis !IsPostback mais tu as un postback.
    mais plutot dans les arguments de la gridview comme ça tu ne te prends pas la tête avec ça.

  5. #5
    Membre chevronné Avatar de jacky01
    Profil pro
    Développeur .NET
    Inscrit en
    Juin 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2007
    Messages : 537
    Par défaut
    Effectivement c'est un !IsPOstback sinon il recharge a chaque fois la grid de base sans tenir compte des filtres ou autre opération. C'est uin problème récurent en ASP.NET.

    Sinon merci quand même j'ai trouvé une solution et le problème d'où provenais le bug.
    Si cela peut aider quelqu'un ma datasource étant une List<T> il a fallut que je gère moi mm le sorting sur OnSorting.

    Voila le code qui fonctionne chez moi :
    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
            protected void Sort_LIST(object sender, GridViewSortEventArgs e)
            {
                List<T> myGridResults = (List<T>)Session["SOURCE"];
                SortDirection _dir = SortDirection.Ascending;
     
                if (ViewState["SORTING"] != null)
                {
                    KeyValuePair<string, string> _old = (KeyValuePair<string, string>)ViewState["SORTING"];
                    if ((e.SortDirection.ToString() == _old.Key) && (e.SortExpression == _old.Value))
                    {
                        if (e.SortDirection == SortDirection.Ascending)
                            _dir = SortDirection.Descending;
                        else
                            _dir = SortDirection.Ascending;
                    }
                }
     
                if (myGridResults != null)
                {
                    var param = Expression.Parameter(typeof(T), e.SortExpression);
                    var sortExpression = Expression.Lambda<Func<T, object>>(Expression.Convert(Expression.Property(param, e.SortExpression), typeof(object)), param);
     
     
                    if (_dir == SortDirection.Ascending)
                    {
                        GRIDVIEW1.DataSource = myGridResults.AsQueryable<T>().OrderBy(sortExpression);
                        ViewState["SORTING"] = new KeyValuePair<string, string>(e.SortDirection.ToString(), e.SortExpression.ToString());
                    }
                    else
                    {
                        GRIDVIEW1.DataSource = myGridResults.AsQueryable<T>().OrderByDescending(sortExpression);
                        ViewState["SORTING"] = null;
                    };
     
     
                    GRIDVIEW1.DataBind();
                }
            }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gridview sorting ou paging sans PostBack
    Par Olivier782 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 09/11/2011, 15h29
  2. Réponses: 7
    Dernier message: 10/05/2011, 16h18
  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